diff --git a/android/app/src/main/res/xml/config.xml b/android/app/src/main/res/xml/config.xml index fae1f62..8e45d53 100644 --- a/android/app/src/main/res/xml/config.xml +++ b/android/app/src/main/res/xml/config.xml @@ -15,6 +15,10 @@ + + + + diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 1528932..bffe9f3 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -69,6 +69,10 @@ const routes: Routes = [ path: 'bookmarks', loadChildren: () => import('./bookmarks/bookmarks.module').then( m => m.BookmarksPageModule) }, + { + path: 'welcome', + loadChildren: () => import('./welcome/welcome.module').then( m => m.WelcomePageModule) + }, ]; @NgModule({ diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 9165604..ae324b8 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -26,8 +26,8 @@ export class AppComponent { this.platform.ready().then(() => { this.statusBar.styleDefault(); this.splashScreen.hide(); - - this.androidFullScreen.isImmersiveModeSupported().then(() => this.androidFullScreen.immersiveMode()); + + this.androidFullScreen.isImmersiveModeSupported().then(() => this.androidFullScreen.immersiveMode(), () => {}); }); } } diff --git a/src/app/components/facebook-login/facebook-login.component.ts b/src/app/components/facebook-login/facebook-login.component.ts index 8d4f5a9..8a0efff 100644 --- a/src/app/components/facebook-login/facebook-login.component.ts +++ b/src/app/components/facebook-login/facebook-login.component.ts @@ -1,4 +1,5 @@ import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; import { UserService } from '../../services/user.service'; // For capacitor Facebook @@ -28,7 +29,8 @@ export class FacebookLoginComponent implements OnInit { constructor( private platform: Platform, private http: HttpClient, - private userService: UserService + private userService: UserService, + private router: Router ) { } @@ -87,11 +89,16 @@ export class FacebookLoginComponent implements OnInit { } } - async loadUserData() { + async loadUserData(isFirstTime?: boolean) { const url = `https://graph.facebook.com/${this.token.userId}?fields=id,name,picture.width(720),email&access_token=${this.token.token}`; this.http.get(url).subscribe(res => { this.user = res; localStorage.setItem('FBUser', JSON.stringify(res)); + + if (isFirstTime) { + this.router.navigate(['/welcome']); + } + }, (err) => { console.log(JSON.stringify(err)); alert("Falied to fetch user data"); diff --git a/src/app/fan-zone/fan-zone.page.ts b/src/app/fan-zone/fan-zone.page.ts index 4afc36b..9d1f667 100644 --- a/src/app/fan-zone/fan-zone.page.ts +++ b/src/app/fan-zone/fan-zone.page.ts @@ -1,10 +1,9 @@ import { Component, OnInit, ViewChild } from '@angular/core'; -import { IonSlides, ModalController } from '@ionic/angular'; +import { IonSlides } from '@ionic/angular'; import { AppVersion } from '@ionic-native/app-version/ngx'; import { Plugins } from '@capacitor/core'; const { Browser } = Plugins; - @Component({ selector: 'app-fan-zone', templateUrl: './fan-zone.page.html', @@ -47,14 +46,17 @@ export class FanZonePage implements OnInit { version: string = ''; constructor( - private modalController: ModalController, private appVersion: AppVersion ) { } async ngOnInit() { // this.version += await this.appVersion.getAppName() + ', Code: ' + await this.appVersion.getVersionCode() + ', Version Number: ' + await this.appVersion.getVersionNumber(); - this.version += 'Version Number: ' + await this.appVersion.getVersionNumber(); + try { + this.version += 'Version Number: ' + await this.appVersion.getVersionNumber(); + } catch { + this.version += ''; + } } async openIAB(url: string) { diff --git a/src/app/welcome/welcome-routing.module.ts b/src/app/welcome/welcome-routing.module.ts new file mode 100644 index 0000000..afa4af9 --- /dev/null +++ b/src/app/welcome/welcome-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { WelcomePage } from './welcome.page'; + +const routes: Routes = [ + { + path: '', + component: WelcomePage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class WelcomePageRoutingModule {} diff --git a/src/app/welcome/welcome.module.ts b/src/app/welcome/welcome.module.ts new file mode 100644 index 0000000..5cfbdad --- /dev/null +++ b/src/app/welcome/welcome.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { WelcomePageRoutingModule } from './welcome-routing.module'; + +import { WelcomePage } from './welcome.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + WelcomePageRoutingModule + ], + declarations: [WelcomePage] +}) +export class WelcomePageModule {} diff --git a/src/app/welcome/welcome.page.html b/src/app/welcome/welcome.page.html new file mode 100644 index 0000000..3b1bf4d --- /dev/null +++ b/src/app/welcome/welcome.page.html @@ -0,0 +1,6 @@ + +
+ profile-image +

Hi, {{ user.name }}!

+
+
diff --git a/src/app/welcome/welcome.page.scss b/src/app/welcome/welcome.page.scss new file mode 100644 index 0000000..2dccbf1 --- /dev/null +++ b/src/app/welcome/welcome.page.scss @@ -0,0 +1,43 @@ +@import '../colors'; + +ion-content { + --background: transparent; + background-color: darken($brand-blue, 10%); + background-image: url('../../assets/confetti.png'); + background-size: cover; +} + +.profile-box { + margin-top: 20vh; + animation: fadeup 1s forwards; + + img { + width: 200px; + height: 200px; + border-radius: 50%; + object-fit: cover; + object-position: top; + margin: 0 auto; + display: block; + box-shadow: 0px 0px 15px 5px darken($brand-blue, 20%); + } + + h2 { + text-align: center; + line-height: 1.5; + color: white; + font-size: 2rem; + margin-top: 30px; + padding: 0 20px; + } + + @keyframes fadeup { + 0% { + opacity: 0; + transform: translateY(10vh); + } 100% { + opacity: 1; + transform: translateY(0vh); + } + } +} \ No newline at end of file diff --git a/src/app/welcome/welcome.page.spec.ts b/src/app/welcome/welcome.page.spec.ts new file mode 100644 index 0000000..6b88185 --- /dev/null +++ b/src/app/welcome/welcome.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { WelcomePage } from './welcome.page'; + +describe('WelcomePage', () => { + let component: WelcomePage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ WelcomePage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(WelcomePage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/welcome/welcome.page.ts b/src/app/welcome/welcome.page.ts new file mode 100644 index 0000000..2fc20ca --- /dev/null +++ b/src/app/welcome/welcome.page.ts @@ -0,0 +1,30 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; + +@Component({ + selector: 'app-welcome', + templateUrl: './welcome.page.html', + styleUrls: ['./welcome.page.scss'], +}) +export class WelcomePage implements OnInit { + user: any; + + constructor( + private router: Router + ) { } + + ngOnInit() { + if (localStorage.getItem('FBUser')) { + this.user = JSON.parse(localStorage.getItem('FBUser')); + + setTimeout(() => { + this.router.navigate(['/tabs/home']); + }, 4000); + + } else { + this.user = null; + this.router.navigate(['/tabs/home']); + } + } + +} diff --git a/src/assets/confetti.png b/src/assets/confetti.png new file mode 100644 index 0000000..0fbea79 Binary files /dev/null and b/src/assets/confetti.png differ