Browse Source

refactoring

Carsten Porth 5 years ago
parent
commit
7340d4ab15

+ 1 - 1
app/README.md

@@ -20,4 +20,4 @@ In case the build process fails with the error
 Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
 ```
 
-run `cordova clean`
+run `cordova clean`

+ 6 - 6
app/package-lock.json

@@ -1,5 +1,5 @@
 {
-  "name": "app",
+  "name": "HybridOSN",
   "version": "0.0.1",
   "lockfileVersion": 1,
   "requires": true,
@@ -1682,11 +1682,6 @@
         "randomfill": "1.0.4"
       }
     },
-    "crypto-js": {
-      "version": "3.1.9-1",
-      "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.9-1.tgz",
-      "integrity": "sha1-/aGedh/Ad+Af+/3G6f38WeiAbNg="
-    },
     "currently-unhandled": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
@@ -3512,6 +3507,11 @@
       "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
       "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
     },
+    "javascript-time-ago": {
+      "version": "1.0.31",
+      "resolved": "https://registry.npmjs.org/javascript-time-ago/-/javascript-time-ago-1.0.31.tgz",
+      "integrity": "sha512-sgvSiGVSqWvK82IKcpgXXTCLHHBFkeptlLLj5vLTlXtuD5B2cqELPM9dN/88pmh3VJYi5otzisVcoiCSJnnorw=="
+    },
     "js-base64": {
       "version": "2.4.5",
       "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz",

+ 36 - 34
app/src/app/app.component.ts

@@ -1,26 +1,27 @@
-import { Component, ViewChild } from '@angular/core';
-import { Nav, Platform } from 'ionic-angular';
-import { StatusBar } from '@ionic-native/status-bar';
-import { SplashScreen } from '@ionic-native/splash-screen';
-import { Storage } from '@ionic/storage';
+import { Component, ViewChild } from "@angular/core";
+import { Nav, Platform } from "ionic-angular";
+import { StatusBar } from "@ionic-native/status-bar";
+import { SplashScreen } from "@ionic-native/splash-screen";
+import { Storage } from "@ionic/storage";
 
-import { AuthProvider } from '../providers/auth/auth';
+import { AuthProvider } from "../providers/auth/auth";
 
-import { HomePage } from '../pages/home/home';
-import { SearchPage } from '../pages/search/search';
-import { SettingsPage } from '../pages/settings/settings';
-import { LoginPage } from '../pages/login/login';
-import { ProfilePage } from '../pages/profile/profile';
-import { TwitterApiProvider } from '../providers/twitter-api/twitter-api';
+import { HomePage } from "../pages/home/home";
+import { SearchPage } from "../pages/search/search";
+import { SettingsPage } from "../pages/settings/settings";
+import { LoginPage } from "../pages/login/login";
+import { ProfilePage } from "../pages/profile/profile";
+import { TwitterApiProvider } from "../providers/twitter-api/twitter-api";
 
 @Component({
-  templateUrl: 'app.html'
+  templateUrl: "app.html"
 })
 export class MyApp {
-  @ViewChild(Nav) nav: Nav;
+  @ViewChild(Nav)
+  nav: Nav;
 
   rootPage: any;
-  pages: Array<{ title: string, icon: string, component: any }>;
+  pages: Array<{ title: string; icon: string; component: any }>;
   user: any;
 
   constructor(
@@ -31,29 +32,31 @@ export class MyApp {
     private twitter: TwitterApiProvider,
     private storage: Storage
   ) {
-    platform.ready().then(() => {
-      // Okay, so the platform is ready and our plugins are available.
-      // Here you can do any higher level native things you might need.
-      //this.setHomepage();
+    platform
+      .ready()
+      .then(() => {
+        // Okay, so the platform is ready and our plugins are available.
+        // Here you can do any higher level native things you might need.
+        //this.setHomepage();
 
-      statusBar.styleDefault();
-      splashScreen.hide();
-      authProvider.isLoggedIn().then(isLoggedIn => {
+        statusBar.styleDefault();
+        splashScreen.hide();
+
+        return this.authProvider.isLoggedIn();
+      })
+      .then(isLoggedIn => {
         this.rootPage = isLoggedIn ? HomePage : LoginPage;
-        storage.get("userId")
-          .then(userId => {
-            twitter.fetchUser(userId)
-              .then(res => {
-                this.user = res;
-              });
-          });
+        return this.storage.get("userId");
       })
-    });
+      .then(userId => this.twitter.fetchUser(userId))
+      .then(res => {
+        this.user = res;
+      });
 
     this.pages = [
-      { title: 'Home', icon: 'home', component: HomePage },
-      { title: 'Search', icon: 'search', component: SearchPage },
-      { title: 'Settings', icon: 'settings', component: SettingsPage }
+      { title: "Home", icon: "home", component: HomePage },
+      { title: "Search", icon: "search", component: SearchPage },
+      { title: "Settings", icon: "settings", component: SettingsPage }
     ];
   }
 
@@ -70,4 +73,3 @@ export class MyApp {
     this.nav.setRoot(LoginPage);
   }
 }
-

+ 28 - 25
app/src/pages/login/login.ts

@@ -1,7 +1,13 @@
-import { Component } from '@angular/core';
-import { IonicPage, NavController, NavParams, MenuController, AlertController } from 'ionic-angular';
-import { AuthProvider } from '../../providers/auth/auth';
-import { HomePage } from '../home/home';
+import { Component } from "@angular/core";
+import {
+  IonicPage,
+  NavController,
+  NavParams,
+  MenuController,
+  AlertController
+} from "ionic-angular";
+import { AuthProvider } from "../../providers/auth/auth";
+import { HomePage } from "../home/home";
 
 /**
  * Generated class for the LoginPage page.
@@ -12,38 +18,35 @@ import { HomePage } from '../home/home';
 
 @IonicPage()
 @Component({
-  selector: 'page-login',
-  templateUrl: 'login.html',
+  selector: "page-login",
+  templateUrl: "login.html"
 })
 export class LoginPage {
-
   constructor(
     public navCtrl: NavController,
     public navParams: NavParams,
     private menuCtrl: MenuController,
     private alertCtrl: AlertController,
-    private authProvider: AuthProvider) {
-  }
+    private authProvider: AuthProvider
+  ) {}
 
   ionViewDidLoad() {
-    this.menuCtrl.enable(false, 'sideNav');
+    this.menuCtrl.enable(false, "sideNav");
   }
 
   login() {
-    this.authProvider.login().then(isSuccessfull => {
-      if (isSuccessfull) {
-        this.navCtrl.setRoot(HomePage);
-      } else {
-        let alert = this.alertCtrl.create({
-          title: 'Login failed',
-          subTitle: 'Somthing went wrong while trying to log you in. Pleas try again.',
-          buttons: ['OK']
-        });
-        alert.present();
-        console.log('ERROR - not logged in');
-      }
-    }
-    );
+    this.authProvider
+      .login()
+      .then(() => this.navCtrl.setRoot(HomePage))
+      .catch(err =>
+        this.alertCtrl
+          .create({
+            title: "Login failed",
+            subTitle:
+              "Somthing went wrong while trying to log you in. Pleas try again.",
+            buttons: ["OK"]
+          })
+          .present()
+      );
   }
-
 }

+ 6 - 6
app/src/pipes/diff-for-humans/diff-for-humans.ts

@@ -1,9 +1,9 @@
-import { Pipe, PipeTransform } from '@angular/core';
-import TimeAgo from 'javascript-time-ago';
-import en from 'javascript-time-ago/locale/en';
+import { Pipe, PipeTransform } from "@angular/core";
+import TimeAgo from "javascript-time-ago";
+import en from "javascript-time-ago/locale/en";
 
 TimeAgo.locale(en);
-const timeAgo = new TimeAgo('en-US');
+const timeAgo = new TimeAgo("en-US");
 
 /**
  * Generated class for the DiffForHumansPipe pipe.
@@ -11,13 +11,13 @@ const timeAgo = new TimeAgo('en-US');
  * See https://angular.io/api/core/Pipe for more info on Angular Pipes.
  */
 @Pipe({
-  name: 'diffForHumans',
+  name: "diffForHumans"
 })
 export class DiffForHumansPipe implements PipeTransform {
   /**
    * Takes a timestamp and makes the diff readable for humans.
    */
   transform(value: string, ...args) {
-    return timeAgo.format(new Date(value), 'twitter');
+    return timeAgo.format(new Date(value), "twitter");
   }
 }

+ 22 - 29
app/src/providers/auth/auth.ts

@@ -1,6 +1,6 @@
-import { HttpClient } from '@angular/common/http';
-import { Injectable } from '@angular/core';
-import { Storage } from '@ionic/storage';
+import { HttpClient } from "@angular/common/http";
+import { Injectable } from "@angular/core";
+import { Storage } from "@ionic/storage";
 import firebase from "firebase";
 
 @Injectable()
@@ -8,50 +8,43 @@ export class AuthProvider {
   authProvider: any;
 
   constructor(public http: HttpClient, private storage: Storage) {
-    console.log('Hello AuthProvider Provider');
+    console.log("Hello AuthProvider Provider");
 
     var config = {
       apiKey: "AIzaSyCMYjjtPPZak7wBBnh9sy8Yr3Fz1145MuM",
       authDomain: "hybridosn.firebaseapp.com",
       databaseURL: "https://hybridosn.firebaseio.com",
-      storageBucket: "hybridosn.appspot.com",
+      storageBucket: "hybridosn.appspot.com"
     };
     firebase.initializeApp(config);
 
     this.authProvider = new firebase.auth.TwitterAuthProvider();
     this.authProvider.setCustomParameters({
-      'lang': 'de'
+      lang: "de"
     });
   }
 
-  isLoggedIn() {
-    return Promise.all([this.storage.get('accessTokenKey'), this.storage.get('accessTokenSecret')])
-      .then(values => {
-        return values[0] != null && values[1] != null;
-      })
-      .catch(err => {
-        console.log(err);
-        return false;
-      });
-  }
-
   login() {
-    return firebase.auth().signInWithRedirect(this.authProvider)
-    .then(() => { return firebase.auth().getRedirectResult()})
-    .then(result => {
-      this.storage.set('accessTokenKey', result.credential["accessToken"]);
-      this.storage.set('accessTokenSecret', result.credential["secret"]);
-      this.storage.set('userId', result.additionalUserInfo["profile"]["id"]);
-      return true;
-    })
-    .catch(error => {
-      console.log(error);
-      return false;
-    })
+    return firebase
+      .auth()
+      .signInWithRedirect(this.authProvider)
+      .then(() => firebase.auth().getRedirectResult())
+      .then(this.setKeys);
   }
 
   logout() {
     this.storage.clear();
   }
 
+  async isLoggedIn() {
+    let accessToken = await this.storage.get("accessTokenKey");
+    let accessTokenKey = await this.storage.get("accessTokenSecret");
+    return accessToken && accessTokenKey;
+  }
+
+  setKeys = result => {
+    this.storage.set("accessTokenKey", result.credential["accessToken"]);
+    this.storage.set("accessTokenSecret", result.credential["secret"]);
+    this.storage.set("userId", result.additionalUserInfo["profile"]["id"]);
+  };
 }