From 917f6ee936b1247db6bae63662dc9ceb1ba2b49f Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Wed, 6 Sep 2017 16:50:35 -0300 Subject: [PATCH] Adds initial profileProvider. Fix getProfile from storage --- src/app/app.component.ts | 17 +++++++++++++++-- src/app/app.module.ts | 6 ++++-- src/providers/persistence/persistence.ts | 15 ++++++++++++++- src/providers/profile/profile.ts | 23 +++++++++++++++++++++++ 4 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 src/providers/profile/profile.ts diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 286c51495..6c1846930 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -5,6 +5,7 @@ import { SplashScreen } from '@ionic-native/splash-screen'; import { Logger } from '@nsalaun/ng-logger'; import { AppProvider } from '../providers/app/app'; +import { ProfileProvider } from '../providers/profile/profile'; import { TabsPage } from '../pages/tabs/tabs'; @@ -12,14 +13,15 @@ import { TabsPage } from '../pages/tabs/tabs'; templateUrl: 'app.html' }) export class CopayApp { - rootPage: any = TabsPage; + rootPage: any; constructor( private platform: Platform, private statusBar: StatusBar, private splashScreen: SplashScreen, private logger: Logger, - private app: AppProvider + private app: AppProvider, + private profile: ProfileProvider ) { this.initializeApp(); @@ -37,6 +39,17 @@ export class CopayApp { this.statusBar.styleLightContent(); this.splashScreen.hide(); } + // Check Profile + this.profile.get().then((profile: any) => { + if (profile) { + this.logger.info('Profile read. Go to HomePage.'); + this.rootPage = TabsPage; + } else { + // TODO: go to onboarding page + this.logger.warn('Profile does not exist. Go to Onboarding.'); + this.rootPage = TabsPage; + } + }); }); } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 1549cdb31..3650c273f 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -40,6 +40,7 @@ import { PlatformProvider } from '../providers/platform/platform'; import { ConfigProvider } from '../providers/config/config'; import { LanguageProvider } from '../providers/language/language'; import { ScanProvider } from '../providers/scan/scan'; +import { ProfileProvider } from '../providers/profile/profile'; export function createTranslateLoader(http: Http) { return new TranslatePoHttpLoader(http, 'assets/i18n', '.po'); @@ -103,7 +104,7 @@ export function createTranslateLoader(http: Http) { provide: PersistenceProvider, useFactory: persistenceProviderFactory, deps: [PlatformProvider, Logger], - multi: true + multi: false }, WalletProvider, AppProvider, @@ -111,7 +112,8 @@ export function createTranslateLoader(http: Http) { ConfigProvider, LanguageProvider, QRScanner, - ScanProvider + ScanProvider, + ProfileProvider ] }) export class AppModule { } diff --git a/src/providers/persistence/persistence.ts b/src/providers/persistence/persistence.ts index c32e7dc6e..643cb3339 100644 --- a/src/providers/persistence/persistence.ts +++ b/src/providers/persistence/persistence.ts @@ -6,6 +6,8 @@ import * as _ from 'lodash'; import { IStorage, ISTORAGE } from './storage/istorage'; import { PlatformProvider } from '../platform/platform'; import { LocalStorage } from './storage/local-storage'; +import { ChromeStorage } from './storage/chrome-storage'; +import { FileStorage } from './storage/file-storage'; import { RamStorage } from './storage/ram-storage'; const Keys = { @@ -39,7 +41,18 @@ const Keys = { export let persistenceProviderFactory = (platform: PlatformProvider, log: Logger) => { // TODO: select appropriate storage service based on platform - let storage = new RamStorage(log); + let storage; + /* + if (this.platform.isChromeApp) { + storage = new ChromeStorage(log); + } else if (this.platform.isCordova) { + storage = new FileStorage(log); + } else { + storage = new LocalStorage(log); + } + */ + // Testing in RAM + storage = new RamStorage(log); return new PersistenceProvider(storage, log); }; diff --git a/src/providers/profile/profile.ts b/src/providers/profile/profile.ts new file mode 100644 index 000000000..937fb010d --- /dev/null +++ b/src/providers/profile/profile.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@angular/core'; +import { PersistenceProvider } from '../persistence/persistence'; + +@Injectable() +export class ProfileProvider { + + constructor( + private persistence: PersistenceProvider + ) { + console.log('Hello ProfileProvider Provider'); + } + + get() { + return new Promise((resolve, reject) => { + this.persistence.getProfile().then((profile: any) => { + resolve(profile); + }, (error) => { + reject(error); + }); + }); + }; + +}