Skip to content

Commit

Permalink
temp fix for ios-only UI components
Browse files Browse the repository at this point in the history
  • Loading branch information
alwx committed Jan 25, 2016
1 parent 2f6b8b0 commit 122d541
Show file tree
Hide file tree
Showing 386 changed files with 147,517 additions and 133 deletions.
19 changes: 10 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,33 @@
# What is Luno?

**Luno** is a demo mobile application written in ClojureScript.
It uses [React Native](https://facebook.github.io/react-native/), [Reagent](https://reagent-project.github.io/), [Re-natal](https://github.com/drapanjanas/re-natal) and a couple of React Native libraries, for example, awesome [React Native Material Design](http://react-native-material-design.github.io/) libraries.
It uses [React Native](https://facebook.github.io/react-native/), [Reagent](https://reagent-project.github.io/), [Re-natal](https://github.com/drapanjanas/re-natal) and a couple of React Native libraries, for example, awesome [React Native Material Design](http://react-native-material-design.github.io/).

It is just proof of concept, and main purpose of Luno is to demonstrate how is it possible to create reusable components,
how to use Navigation Drawer, Navigator and NavigatorIOS, and how to create apps indistinguishable from native Android or iOS apps.
It is just proof of concept, and main purpose of Luno is to demonstrate how to create reusable components,
use Navigation Drawer, Navigator and NavigatorIOS, how to work with native libraries (it uses [Material Dialogs](https://github.com/afollestad/material-dialogs) for Android)
and how to create apps indistinguishable from native Android or iOS apps.

Luno is not completed, more features are coming.

## Screenshots

![Android & iOS](https://raw.githubusercontent.com/alwx/luno-react-native/master/_screenshots/android-ios.png)

## API

Luno uses OpenWeatherMap API to load information about weather, and Bing Search API to load images.
Both APIs require application IDs, but I don't mind of using my AppIDs (see src/luno/config.cljs for keys)

But these APIs are limited — for example Bing API allows you to perform 5000 searches per month. In the case you don't
But these APIs have some limits — for example Bing API allows you to perform 5000 searches per month. In the case you don't
see pictures or something works not the way you want it to work, please, obtain your own API keys and try running app again.

## Screenshots

![Android & iOS](https://raw.githubusercontent.com/alwx/luno-react-native/master/_screenshots/android-ios.png)

## How to run?

Luno is based on re-natal. Please, refer to [re-natal documentation](https://github.com/drapanjanas/re-natal/blob/master/README.md) to run this app on iOS or Android.

## TODO

* Ability to save cities to internal database
* Improved error handling
* Error handling

Feel free to send pull request with any additions. And, of course, I am open for any suggestions for code style, architecture or UI.
12 changes: 9 additions & 3 deletions src/luno/ios/core.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,16 @@
(def info-icon
"data:image/png;base64,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")

;;TODO: move it to better place
(def tab-bar-ios
(r/adapt-react-class (.-TabBarIOS js/React)))
(def tab-bar-ios-item
(r/adapt-react-class (.-TabBarIOS.Item js/React)))

(defn root-scene [{navigator :navigator}]
(let [tab (subscribe [:get-ios-tab])]
[ui/tab-bar-ios
[ui/tab-bar-ios-item {:icon {:uri cloud-icon :scale 4}
[tab-bar-ios
[tab-bar-ios-item {:icon {:uri cloud-icon :scale 4}
:selected (= @tab "main")
:on-press #(dispatch [:set-ios-tab "main"])
:title "Weather"}
Expand All @@ -39,7 +45,7 @@
[ui/view {:style {:padding 10
:background-color "transparent"}}
component]])))}]]
[ui/tab-bar-ios-item {:icon {:uri info-icon :scale 5}
[tab-bar-ios-item {:icon {:uri info-icon :scale 5}
:selected (= @tab "about")
:on-press #(dispatch [:set-ios-tab "about"])
:title "About"}
Expand Down
5 changes: 0 additions & 5 deletions src/luno/ui.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,6 @@
(def drawer-section
(r/adapt-react-class (.-Drawer.Section js/MaterialDesign)))

(defn tab-bar-ios []
(r/adapt-react-class (.-TabBarIOS js/React)))
(defn tab-bar-ios-item []
(r/adapt-react-class (.-TabBarIOS.Item js/React)))

;; Other

(def intent-android
Expand Down
2 changes: 1 addition & 1 deletion target/android/env/android/main.cljs.cache.edn
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
;; Analyzed by ClojureScript 1.7.170
{:use-macros nil, :excludes #{}, :name env.android.main, :imports nil, :requires {core luno.android.core, luno.android.core luno.android.core, figwheel figwheel.client, figwheel.client figwheel.client}, :uses nil, :require-macros {figwheel figwheel.client, figwheel.client figwheel.client}, :cljs.analyzer/constants {:seen #{:heads-up-display :jsload-callback :websocket-url}, :order [:websocket-url :heads-up-display :jsload-callback]}, :doc nil}
{:name env.android.main, :doc nil, :excludes #{}, :use-macros nil, :require-macros {figwheel figwheel.client, figwheel.client figwheel.client}, :uses nil, :requires {core luno.android.core, luno.android.core luno.android.core, figwheel figwheel.client, figwheel.client figwheel.client}, :imports nil, :cljs.analyzer/constants {:seen #{:heads-up-display :jsload-callback :websocket-url}, :order [:websocket-url :heads-up-display :jsload-callback]}}
Loading

0 comments on commit 122d541

Please sign in to comment.