diff --git a/src/Styles.js b/src/Styles.js index 79b7c138..3b37a453 100644 --- a/src/Styles.js +++ b/src/Styles.js @@ -28,7 +28,7 @@ export default class GlobalStyles { return Storage.getItem("activeTheme").then(function(theme) { let runDefaultTheme = () => { var theme = this.systemTheme(); - theme.active = true; + theme.setMobileActive(true); this.activeTheme = theme; var constants = this.defaultConstants(); this.setStyles(this.defaultRules(constants), constants, theme.getMobileRules().statusBar); @@ -62,9 +62,12 @@ export default class GlobalStyles { ModelManager.getInstance().addItemSyncObserver("themes", "SN|Theme", function(items){ if(this.activeTheme && this.activeTheme.isSwapIn) { - this.activeTheme.isSwapIn = false; - this.activeTheme = _.find(this.themes(), {uuid: this.activeTheme.uuid}); - this.activeTheme.active = true; + var matchingTheme = _.find(this.themes(), {uuid: this.activeTheme.uuid}); + if(matchingTheme) { + this.activeTheme = matchingTheme; + this.activeTheme.isSwapIn = false; + this.activeTheme.setMobileActive(true); + } } }.bind(this)); } @@ -137,16 +140,18 @@ export default class GlobalStyles { activateTheme(theme, writeToStorage = true) { if(this.activeTheme) { - this.activeTheme.active = false; + this.activeTheme.setMobileActive(false); } + console.log("Activating theme", JSON.stringify(theme)); + var run = () => { var constants = _.merge(this.defaultConstants(), theme.getMobileRules().constants); var rules = _.merge(this.defaultRules(constants), theme.getMobileRules().rules); this.setStyles(rules, constants, theme.getMobileRules().statusBar); this.activeTheme = theme; - theme.active = true; + theme.setMobileActive(true); if(theme.default) { Storage.removeItem("activeTheme"); diff --git a/src/containers/account/ThemesSection.js b/src/containers/account/ThemesSection.js index 4e91cffa..0fa85a4d 100644 --- a/src/containers/account/ThemesSection.js +++ b/src/containers/account/ThemesSection.js @@ -23,7 +23,7 @@ export default class ThemesSection extends Component { text={theme.name} key={theme.uuid} first={i == 0} - selected={() => {return theme.active}} + selected={() => {return theme.isMobileActive()}} dimmed={theme.getNotAvailOnMobile()} last={i == this.props.themes.length - 1 && this.props.themes.length > 1} /> diff --git a/src/models/app/component.js b/src/models/app/component.js index 1fed24d0..f65e8cb9 100644 --- a/src/models/app/component.js +++ b/src/models/app/component.js @@ -22,10 +22,10 @@ export default class Component extends Item { mapContentToLocalProperties(content) { super.mapContentToLocalProperties(content) /* Legacy */ - this.url = content.url; + this.url = content.url || content.hosted_url; /* New */ this.local_url = content.local_url; - this.hosted_url = content.hosted_url; + this.hosted_url = content.hosted_url || content.url; this.offlineOnly = content.offlineOnly; if(content.valid_until) { diff --git a/src/models/app/theme.js b/src/models/app/theme.js index 504ce710..e251ec43 100644 --- a/src/models/app/theme.js +++ b/src/models/app/theme.js @@ -35,4 +35,13 @@ export default class Theme extends Component { getNotAvailOnMobile() { return this.getAppDataItem("notAvailableOnMobile"); } + + /* We must not use .active because if you set that to true, it will also activate that theme on desktop/web */ + setMobileActive(active) { + this.setAppDataItem("mobileActive", active); + } + + isMobileActive() { + return this.getAppDataItem("mobileActive"); + } } diff --git a/src/screens/Notes.js b/src/screens/Notes.js index 0be10f55..0ef14947 100644 --- a/src/screens/Notes.js +++ b/src/screens/Notes.js @@ -79,7 +79,9 @@ export default class Notes extends Abstract { Sync.getInstance().removeSyncObserver(this.syncObserver); Sync.getInstance().removeSyncStatusObserver(this.syncStatusObserver); Auth.getInstance().removeEventObserver(this.signoutObserver); - this.options.removeChangeObserver(this.optionsObserver); + if(this.options) { + this.options.removeChangeObserver(this.optionsObserver); + } clearInterval(this.syncTimer); } diff --git a/vendor/react-native-navigation b/vendor/react-native-navigation index 1929e1ee..ee16d435 160000 --- a/vendor/react-native-navigation +++ b/vendor/react-native-navigation @@ -1 +1 @@ -Subproject commit 1929e1ee82810c1907ba06c051fe6add60b2c913 +Subproject commit ee16d43513e6224de4b03344036cfb21b1fbdfd8