mirror of
https://gitlab.com/walljm/dynamicbible.git
synced 2025-07-23 23:39:50 -04:00
* fix bug in search history for typeahead
This commit is contained in:
parent
91dcfe846b
commit
b0b7b696e9
File diff suppressed because one or more lines are too long
@ -131,5 +131,4 @@
|
||||
<splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
|
||||
</platform>
|
||||
<engine name="android" spec="7.0.0" />
|
||||
<engine name="ios" spec="4.5.5" />
|
||||
</widget>
|
||||
|
1478
DynamicBibleIonic/package-lock.json
generated
1478
DynamicBibleIonic/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,129 +1,129 @@
|
||||
{
|
||||
"version": "3.2.0",
|
||||
"name": "dynamicbible",
|
||||
"author": "Jason Wall",
|
||||
"homepage": "http://dynamicbible.com/",
|
||||
"private": true,
|
||||
"config": {
|
||||
"ionic_source_map": "source-map"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "ionic-app-scripts clean",
|
||||
"build": "ionic-app-scripts build",
|
||||
"lint": "ionic-app-scripts lint",
|
||||
"ionic:build": "ionic-app-scripts build",
|
||||
"ionic:serve": "ionic-app-scripts serve",
|
||||
"start": "ionic serve",
|
||||
"lab": "ionic serve --lab",
|
||||
"test": "ng test",
|
||||
"test-coverage": "ng test --code-coverage",
|
||||
"release-android": "ionic cordova build android --release -- --buildConfig=./build.json",
|
||||
"android": "ionic cordova run android"
|
||||
},
|
||||
"dependencies": {
|
||||
"@angular/common": "5.0.0",
|
||||
"@angular/compiler": "5.0.0",
|
||||
"@angular/compiler-cli": "5.0.0",
|
||||
"@angular/core": "5.0.0",
|
||||
"@angular/forms": "5.0.0",
|
||||
"@angular/http": "5.0.0",
|
||||
"@angular/platform-browser": "5.0.0",
|
||||
"@angular/platform-browser-dynamic": "5.0.0",
|
||||
"@ionic-native/core": "4.3.1",
|
||||
"@ionic-native/splash-screen": "4.3.1",
|
||||
"@ionic-native/status-bar": "4.3.1",
|
||||
"@ionic/storage": "2.1.3",
|
||||
"angularfire2": "^5.0.0-rc.4",
|
||||
"cordova-android": "7.0.0",
|
||||
"cordova-android-support-gradle-release": "^1.4.7",
|
||||
"cordova-ios": "4.5.5",
|
||||
"cordova-plugin-browsertab": "^0.2.0",
|
||||
"cordova-plugin-buildinfo": "^2.0.2",
|
||||
"cordova-plugin-compat": "^1.2.0",
|
||||
"cordova-plugin-console": "^1.1.0",
|
||||
"cordova-plugin-customurlscheme": "^4.3.0",
|
||||
"cordova-plugin-device": "^1.1.7",
|
||||
"cordova-plugin-inappbrowser": "^2.0.2",
|
||||
"cordova-plugin-splashscreen": "^4.1.0",
|
||||
"cordova-plugin-statusbar": "^2.4.2",
|
||||
"cordova-plugin-whitelist": "^1.3.3",
|
||||
"cordova-universal-links-plugin": "git+https://github.com/walteram/cordova-universal-links-plugin.git",
|
||||
"firebase": "^4.8.0",
|
||||
"ionic-angular": "3.9.0",
|
||||
"ionic-plugin-keyboard": "^2.2.1",
|
||||
"ionic2-auto-complete": "^1.6.2-alpha",
|
||||
"ionicons": "3.0.0",
|
||||
"ios-deploy": "^1.9.4",
|
||||
"promise-polyfill": "^6.0.2",
|
||||
"rxjs": "5.5.2",
|
||||
"sw-toolbox": "3.6.0",
|
||||
"zone.js": "0.8.18"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular/cli": "1.6.3",
|
||||
"@ionic/app-scripts": "3.1.0",
|
||||
"@types/jasmine": "2.5.41",
|
||||
"@types/node": "7.0.4",
|
||||
"codecov": "2.2.0",
|
||||
"connect": "3.6.2",
|
||||
"ionic-mocks": "0.10.1",
|
||||
"jasmine-core": "2.6.2",
|
||||
"jasmine-reporters": "2.2.1",
|
||||
"karma": "1.7.0",
|
||||
"karma-chrome-launcher": "2.1.1",
|
||||
"karma-cli": "1.0.1",
|
||||
"karma-coverage-istanbul-reporter": "1.2.1",
|
||||
"karma-jasmine": "1.1.0",
|
||||
"karma-jasmine-html-reporter": "0.2.2",
|
||||
"karma-junit-reporter": "1.2.0",
|
||||
"protractor": "5.1.2",
|
||||
"serve-static": "1.12.3",
|
||||
"ts-node": "3.0.4",
|
||||
"tslint": "5.3.2",
|
||||
"tslint-eslint-rules": "4.1.1",
|
||||
"typescript": "~2.4.2",
|
||||
"ws": "3.3.2"
|
||||
},
|
||||
"cordovaPlugins": [
|
||||
"cordova-plugin-whitelist",
|
||||
"cordova-plugin-statusbar",
|
||||
"cordova-plugin-console",
|
||||
"cordova-plugin-device",
|
||||
"cordova-plugin-splashscreen",
|
||||
"ionic-plugin-keyboard"
|
||||
],
|
||||
"cordovaPlatforms": [],
|
||||
"description": "Dynamic Bible: A bible made for studying scripture",
|
||||
"-vs-binding": {
|
||||
"AfterBuild": [
|
||||
"ionic:serve"
|
||||
]
|
||||
},
|
||||
"cordova": {
|
||||
"plugins": {
|
||||
"cordova-plugin-console": {},
|
||||
"cordova-plugin-device": {},
|
||||
"cordova-plugin-splashscreen": {},
|
||||
"cordova-plugin-statusbar": {},
|
||||
"cordova-plugin-whitelist": {},
|
||||
"ionic-plugin-keyboard": {},
|
||||
"cordova-plugin-buildinfo": {},
|
||||
"cordova-plugin-browsertab": {},
|
||||
"cordova-plugin-inappbrowser": {},
|
||||
"cordova-plugin-customurlscheme": {
|
||||
"URL_SCHEME": "com.firebase.cordova",
|
||||
"ANDROID_SCHEME": " ",
|
||||
"ANDROID_HOST": " ",
|
||||
"ANDROID_PATHPREFIX": "/"
|
||||
},
|
||||
"cordova-universal-links-plugin": {},
|
||||
"cordova-android-support-gradle-release": {
|
||||
"ANDROID_SUPPORT_VERSION": "27.+"
|
||||
}
|
||||
"version": "3.2.0",
|
||||
"name": "dynamicbible",
|
||||
"author": "Jason Wall",
|
||||
"homepage": "http://dynamicbible.com/",
|
||||
"private": true,
|
||||
"config": {
|
||||
"ionic_source_map": "source-map"
|
||||
},
|
||||
"platforms": [
|
||||
"android",
|
||||
"ios"
|
||||
]
|
||||
}
|
||||
}
|
||||
"scripts": {
|
||||
"clean": "ionic-app-scripts clean",
|
||||
"build": "ionic-app-scripts build",
|
||||
"lint": "ionic-app-scripts lint",
|
||||
"ionic:build": "ionic-app-scripts build",
|
||||
"ionic:serve": "ionic-app-scripts serve",
|
||||
"start": "ionic serve",
|
||||
"lab": "ionic serve --lab",
|
||||
"test": "ng test",
|
||||
"test-coverage": "ng test --code-coverage",
|
||||
"release-android": "ionic cordova build android --release -- --buildConfig=./build.json",
|
||||
"android": "ionic cordova run android"
|
||||
},
|
||||
"dependencies": {
|
||||
"@angular/common": "5.0.0",
|
||||
"@angular/compiler": "5.0.0",
|
||||
"@angular/compiler-cli": "5.0.0",
|
||||
"@angular/core": "5.0.0",
|
||||
"@angular/forms": "5.0.0",
|
||||
"@angular/http": "5.0.0",
|
||||
"@angular/platform-browser": "5.0.0",
|
||||
"@angular/platform-browser-dynamic": "5.0.0",
|
||||
"@ionic-native/core": "4.3.1",
|
||||
"@ionic-native/splash-screen": "4.3.1",
|
||||
"@ionic-native/status-bar": "4.3.1",
|
||||
"@ionic/storage": "2.1.3",
|
||||
"angularfire2": "^5.0.0-rc.4",
|
||||
"cordova-android": "7.0.0",
|
||||
"cordova-android-support-gradle-release": "^1.4.7",
|
||||
"cordova-ios": "4.5.5",
|
||||
"cordova-plugin-browsertab": "^0.2.0",
|
||||
"cordova-plugin-buildinfo": "^2.0.2",
|
||||
"cordova-plugin-compat": "^1.2.0",
|
||||
"cordova-plugin-console": "^1.1.0",
|
||||
"cordova-plugin-customurlscheme": "^4.3.0",
|
||||
"cordova-plugin-device": "^1.1.7",
|
||||
"cordova-plugin-inappbrowser": "^2.0.2",
|
||||
"cordova-plugin-splashscreen": "^4.1.0",
|
||||
"cordova-plugin-statusbar": "^2.4.2",
|
||||
"cordova-plugin-whitelist": "^1.3.3",
|
||||
"cordova-universal-links-plugin": "git+https://github.com/walteram/cordova-universal-links-plugin.git",
|
||||
"firebase": "^4.8.0",
|
||||
"ionic-angular": "3.9.0",
|
||||
"ionic-plugin-keyboard": "^2.2.1",
|
||||
"ionic2-auto-complete": "^1.6.2-alpha",
|
||||
"ionicons": "3.0.0",
|
||||
"node-gyp": "^5.0.1",
|
||||
"node-sass": "^4.5.3",
|
||||
"promise-polyfill": "^6.0.2",
|
||||
"rxjs": "5.5.2",
|
||||
"sw-toolbox": "3.6.0",
|
||||
"zone.js": "0.8.18"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular/cli": "1.6.3",
|
||||
"@ionic/app-scripts": "3.1.0",
|
||||
"@types/jasmine": "2.5.41",
|
||||
"@types/node": "7.0.4",
|
||||
"codecov": "2.2.0",
|
||||
"connect": "3.6.2",
|
||||
"ionic-mocks": "0.10.1",
|
||||
"jasmine-core": "2.6.2",
|
||||
"jasmine-reporters": "2.2.1",
|
||||
"karma": "1.7.0",
|
||||
"karma-chrome-launcher": "2.1.1",
|
||||
"karma-cli": "1.0.1",
|
||||
"karma-coverage-istanbul-reporter": "1.2.1",
|
||||
"karma-jasmine": "1.1.0",
|
||||
"karma-jasmine-html-reporter": "0.2.2",
|
||||
"karma-junit-reporter": "1.2.0",
|
||||
"protractor": "5.1.2",
|
||||
"serve-static": "1.12.3",
|
||||
"ts-node": "3.0.4",
|
||||
"tslint": "5.3.2",
|
||||
"tslint-eslint-rules": "4.1.1",
|
||||
"typescript": "~2.4.2",
|
||||
"ws": "3.3.2"
|
||||
},
|
||||
"cordovaPlugins": [
|
||||
"cordova-plugin-whitelist",
|
||||
"cordova-plugin-statusbar",
|
||||
"cordova-plugin-console",
|
||||
"cordova-plugin-device",
|
||||
"cordova-plugin-splashscreen",
|
||||
"ionic-plugin-keyboard"
|
||||
],
|
||||
"cordovaPlatforms": [],
|
||||
"description": "Dynamic Bible: A bible made for studying scripture",
|
||||
"-vs-binding": {
|
||||
"AfterBuild": [
|
||||
"ionic:serve"
|
||||
]
|
||||
},
|
||||
"cordova": {
|
||||
"plugins": {
|
||||
"cordova-plugin-console": {},
|
||||
"cordova-plugin-device": {},
|
||||
"cordova-plugin-splashscreen": {},
|
||||
"cordova-plugin-statusbar": {},
|
||||
"cordova-plugin-whitelist": {},
|
||||
"ionic-plugin-keyboard": {},
|
||||
"cordova-plugin-buildinfo": {},
|
||||
"cordova-plugin-browsertab": {},
|
||||
"cordova-plugin-inappbrowser": {},
|
||||
"cordova-plugin-customurlscheme": {
|
||||
"URL_SCHEME": "com.firebase.cordova",
|
||||
"ANDROID_SCHEME": " ",
|
||||
"ANDROID_HOST": " ",
|
||||
"ANDROID_PATHPREFIX": "/"
|
||||
},
|
||||
"cordova-universal-links-plugin": {},
|
||||
"cordova-android-support-gradle-release": {
|
||||
"ANDROID_SUPPORT_VERSION": "27.+"
|
||||
}
|
||||
},
|
||||
"platforms": [
|
||||
"android"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -1,19 +1,19 @@
|
||||
/// <reference path='../../typings/globals/jquery/index.d.ts' />
|
||||
import { Injectable } from "@angular/core";
|
||||
import { AngularFireDatabase, AngularFireObject } from "angularfire2/database";
|
||||
import { AngularFireAuth } from "angularfire2/auth";
|
||||
import * as firebase from "firebase/app";
|
||||
import { Observable } from "rxjs/Observable";
|
||||
import { Catch } from "rxjs/add/operator";
|
||||
import { Storage } from "@ionic/storage";
|
||||
import { Injectable } from '@angular/core';
|
||||
import { AngularFireDatabase, AngularFireObject } from 'angularfire2/database';
|
||||
import { AngularFireAuth } from 'angularfire2/auth';
|
||||
import * as firebase from 'firebase/app';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { Catch } from 'rxjs/add/operator';
|
||||
import { Storage } from '@ionic/storage';
|
||||
|
||||
import { CardItem } from "../pages/search/search";
|
||||
import { Promise } from "q";
|
||||
import { setTimeout } from "timers";
|
||||
import { CardItem } from '../pages/search/search';
|
||||
import { Promise } from 'q';
|
||||
import { setTimeout } from 'timers';
|
||||
|
||||
import { Output, EventEmitter } from "@angular/core";
|
||||
import { Output, EventEmitter } from '@angular/core';
|
||||
|
||||
export const DEFAULT_USER_NAME = "john_doe";
|
||||
export const DEFAULT_USER_NAME = 'john_doe';
|
||||
|
||||
@Injectable()
|
||||
export class ProfileService {
|
||||
@ -38,10 +38,10 @@ export class ProfileService {
|
||||
|
||||
constructor(private local: Storage, private db: AngularFireDatabase, public firebaseAuth: AngularFireAuth) {
|
||||
this.url = document.URL;
|
||||
this.isWeb = document.URL.startsWith("http") && !document.URL.startsWith("http://localhost:8080");
|
||||
this.isWeb = document.URL.startsWith('http') && !document.URL.startsWith('http://localhost:8080');
|
||||
this.localIsLoaded = false;
|
||||
|
||||
this.local.get("searchHistory").then(v => {
|
||||
this.local.get('searchHistory').then(v => {
|
||||
if (v === null) {
|
||||
this.searchHistory = [];
|
||||
} else {
|
||||
@ -59,9 +59,9 @@ export class ProfileService {
|
||||
// If we have a remote profile then save it there too
|
||||
if (self.remoteProfile && self.localProfile.uid) {
|
||||
let st = new Date();
|
||||
console.log("Saving the remote profile...");
|
||||
console.log('Saving the remote profile...');
|
||||
self.remoteProfile.ref.set(self.localProfile);
|
||||
console.log(" Finished saving remote profile. " + self.elapsed(st, new Date()) + "ms");
|
||||
console.log(' Finished saving remote profile. ' + self.elapsed(st, new Date()) + 'ms');
|
||||
}
|
||||
self.needsSync = false;
|
||||
}
|
||||
@ -70,7 +70,7 @@ export class ProfileService {
|
||||
}, 2000);
|
||||
})(this);
|
||||
|
||||
this.local.get("profile").then(json_profile => {
|
||||
this.local.get('profile').then(json_profile => {
|
||||
let t = this.profile();
|
||||
|
||||
if (json_profile !== null) t = JSON.parse(json_profile);
|
||||
@ -89,19 +89,18 @@ export class ProfileService {
|
||||
}
|
||||
|
||||
// if the query already exists, remove it so it will be unique
|
||||
this.searchHistory = this.searchHistory.filter( v => v === qry);
|
||||
this.searchHistory = this.searchHistory.filter(v => v !== qry);
|
||||
|
||||
// put it at the top.
|
||||
this.searchHistory.unshift(qry);
|
||||
|
||||
// no more than 5.
|
||||
if (this.searchHistory.length > 5)
|
||||
{
|
||||
if (this.searchHistory.length > 5) {
|
||||
this.searchHistory = this.searchHistory.slice(0, 5);
|
||||
}
|
||||
|
||||
// save it to storage.
|
||||
this.local.set("searchHistory", this.searchHistory);
|
||||
this.local.set('searchHistory', this.searchHistory);
|
||||
}
|
||||
|
||||
//#region Profile
|
||||
@ -130,7 +129,7 @@ export class ProfileService {
|
||||
}
|
||||
|
||||
isOnSearchPage() {
|
||||
return this.title !== "Search";
|
||||
return this.title !== 'Search';
|
||||
}
|
||||
|
||||
profile(): User {
|
||||
@ -142,10 +141,10 @@ export class ProfileService {
|
||||
}
|
||||
|
||||
subscribeToRemoteProfile(db: AngularFireDatabase, user: firebase.User) {
|
||||
console.log("subscribeToRemoteProfile");
|
||||
console.log('subscribeToRemoteProfile');
|
||||
if (!user || this.firebaseUser) return;
|
||||
console.log("You got the firebase user.");
|
||||
let obj = db.object("/settings/" + user.uid);
|
||||
console.log('You got the firebase user.');
|
||||
let obj = db.object('/settings/' + user.uid);
|
||||
this.remoteProfile = {
|
||||
ref: obj as AngularFireObject<User>,
|
||||
stream: obj.valueChanges() as Observable<User>
|
||||
@ -167,7 +166,7 @@ export class ProfileService {
|
||||
}
|
||||
|
||||
handleRemotePreferenceChange(user: User) {
|
||||
console.log("handleRemotePreferenceChange");
|
||||
console.log('handleRemotePreferenceChange');
|
||||
if (user) {
|
||||
let changed = false;
|
||||
if (user.saved_pages !== undefined) {
|
||||
@ -208,7 +207,7 @@ export class ProfileService {
|
||||
}
|
||||
|
||||
authenticate() {
|
||||
console.log("Authenticating to remote...");
|
||||
console.log('Authenticating to remote...');
|
||||
|
||||
let self = this;
|
||||
let provider = new firebase.auth.GoogleAuthProvider();
|
||||
@ -231,13 +230,13 @@ export class ProfileService {
|
||||
}
|
||||
|
||||
refresh() {
|
||||
console.log("refresh");
|
||||
console.log('refresh');
|
||||
this.logout();
|
||||
this.authenticate();
|
||||
}
|
||||
|
||||
logout() {
|
||||
console.log("logout");
|
||||
console.log('logout');
|
||||
this.firebaseAuth.auth.signOut(); // sign out
|
||||
this.remoteProfile = null; // inform the profile service not to bother
|
||||
this.remoteLoggedIn = false;
|
||||
@ -249,8 +248,8 @@ export class ProfileService {
|
||||
}
|
||||
|
||||
localSave() {
|
||||
console.log("saving local");
|
||||
this.local.set("profile", JSON.stringify(this.profile()));
|
||||
console.log('saving local');
|
||||
this.local.set('profile', JSON.stringify(this.profile()));
|
||||
}
|
||||
|
||||
private elapsed(start: Date, finish: Date) {
|
||||
@ -312,11 +311,11 @@ export class ProfileService {
|
||||
|
||||
// TODO(jwall): This belongs somewhere else.
|
||||
textSizeChanged() {
|
||||
$("html").css("font-size", this.profile().font_size + "px");
|
||||
$('html').css('font-size', this.profile().font_size + 'px');
|
||||
}
|
||||
|
||||
fontFamilyChanged() {
|
||||
document.querySelector("html").style.cssText = "--card-font: " + this.profile().font_family;
|
||||
document.querySelector('html').style.cssText = '--card-font: ' + this.profile().font_family;
|
||||
this.textSizeChanged();
|
||||
}
|
||||
|
||||
@ -325,7 +324,7 @@ export class ProfileService {
|
||||
username: DEFAULT_USER_NAME,
|
||||
uid: null,
|
||||
font_size: 10,
|
||||
font_family: "roboto, helvetica, arial, sans-serif",
|
||||
font_family: 'roboto, helvetica, arial, sans-serif',
|
||||
saved_pages: [],
|
||||
items: [],
|
||||
strongs_modal: true,
|
||||
|
Loading…
x
Reference in New Issue
Block a user