Adds initial profileProvider. Fix getProfile from storage

This commit is contained in:
Gustavo Maximiliano Cortez 2017-09-06 16:50:35 -03:00
parent 9474bf959d
commit 917f6ee936
No known key found for this signature in database
GPG Key ID: 15EDAD8D9F2EB1AF
4 changed files with 56 additions and 5 deletions

View File

@ -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;
}
});
});
}
}

View File

@ -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 { }

View File

@ -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);
};

View File

@ -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);
});
});
};
}