diff --git a/src/assets/i18n-en.json b/src/assets/i18n-en.json
index 057a04bc..4c219c0e 100644
--- a/src/assets/i18n-en.json
+++ b/src/assets/i18n-en.json
@@ -45,9 +45,9 @@
"RANKING": {
"DETAIL": "Ranking Details",
"ME": "Me",
- "MONTHLYPOINTS": "Points(Monthly)",
- "PAGETITLE": "Leaderboard",
- "TOTALPOINTS": "Points(Total)"
+ "MONTHLYPOINTS": "Points (Monthly)",
+ "PAGETITLE": "Ranking (Monthly)",
+ "TOTALPOINTS": "Points (Total)"
},
"RESETPASSWORD": {
"PAGETITLE": "Reset Password"
diff --git a/src/pages/settings/settings.html b/src/pages/settings/settings.html
index 5b516ab6..799dc693 100644
--- a/src/pages/settings/settings.html
+++ b/src/pages/settings/settings.html
@@ -8,23 +8,29 @@
{{ 'SETTINGS.PROFILE' | translate }} ({{ getUserEmail() }})
+
+
+
+
+ Hide name in rankings
+
+
+
+
+
+ {{ 'SETTINGS.SUPPORT' | translate }}
+
-
-
-
-
- {{ 'SETTINGS.SUPPORT' | translate }}
-
{{ 'SETTINGS.HELP' | translate }}
+
+
diff --git a/src/pages/settings/settings.page.ts b/src/pages/settings/settings.page.ts
index 34293901..774eed87 100644
--- a/src/pages/settings/settings.page.ts
+++ b/src/pages/settings/settings.page.ts
@@ -1,15 +1,15 @@
import { Component } from '@angular/core';
-import { App, NavController, MenuController, LoadingController } from 'ionic-angular';
+import { App, NavController, MenuController, LoadingController, AlertController } from 'ionic-angular';
// services
import { CacheService } from '../../shared/cache/cache.service';
+import { GameService } from '../../services/game.service';
// pages
-import { LeaderboardSettingsPage } from '../settings/leaderboard/leaderboard-settings.page';
import { LoginPage } from '../../pages/login/login';
import { TutorialPage } from '../settings/tutorial/tutorial.page';
import { TermsConditionsPage } from '../registration/terms-conditions/terms-conditions.page';
// Others
import { TranslationService } from '../../shared/translation/translation.service';
-import { loadingMessages, errMessages } from '../../app/messages';
+import { loadingMessages } from '../../app/messages';
@Component({
selector: 'settings-page',
@@ -17,34 +17,120 @@ import { loadingMessages, errMessages } from '../../app/messages';
})
export class SettingsPage {
helpline: string = "help@practera.com";
+ hideName: boolean = false;
logoutMessage: any = loadingMessages.Logout.logout;
settings: any = [];
+ isLock: boolean = false;
+ pageLoad: boolean = true;
constructor(
public appCtrl: App,
+ public alertCtrl: AlertController,
+ public cacheService: CacheService,
+ public gameService: GameService,
public loadingCtrl: LoadingController,
public menuCtrl: MenuController,
public navCtrl: NavController,
- public cache: CacheService,
- public translationService: TranslationService) {}
- getUserEmail() {
- return this.cache.getLocal('email') || '';
+ public translationService: TranslationService,
+ ) {}
+
+ ionViewWillEnter(){
+ this.pageLoad = true;
+ this.preload();
}
- goLeaderBoardSettings(){
- this.navCtrl.push(LeaderboardSettingsPage);
+
+ preload() {
+ const loading = this.loadingCtrl.create({
+ content: 'Loading'
+ });
+ loading.present();
+
+ let gameId = this.cacheService.getLocal('game_id');
+ this.gameService.getCharacters(gameId)
+ .subscribe((characters) => {
+ let me = characters.Characters[0];
+ if (me.meta == null) {
+ this.hideName = false;
+ }
+ if (me.meta != null){
+ if (me.meta.private === 0) {
+ this.hideName = false;
+ } else {
+ this.hideName = true;
+ }
+ }
+ loading.dismiss();
+ }, (err) => {
+ loading.dismiss();
+ });
}
+
+ triggerHideName() {
+ if (this.pageLoad) {
+ this.pageLoad = false;
+ return false;
+ }
+
+ if (this.isLock) {
+ this.isLock = false;
+ } else {
+ const showAlert = (msg) => {
+ let alert = this.alertCtrl.create({
+ subTitle: msg,
+ buttons: ['OK']
+ });
+ alert.present();
+ }
+
+ const loader = this.loadingCtrl.create({
+ content: 'Updating'
+ });
+
+ loader.present().then(() => {
+ this.isLock = true;
+ this.gameService.postCharacter({
+ Character: {
+ id: this.cacheService.getLocal('character_id'),
+ meta: {
+ private: (this.hideName) ? 1 : 0
+ }
+ }
+ })
+ .subscribe((result) => {
+ this.isLock = false;
+ loader.dismiss();
+ let msg = 'You name will now be hidden if in the ranking';
+ if (!this.hideName) {
+ msg = 'Your name will now be displayed if in the ranking';
+ }
+ showAlert(msg);
+ }, (err) => {
+ this.hideName = !this.hideName;
+ showAlert('Unabled to change your privacy setting.');
+ loader.dismiss();
+ });
+ });
+ }
+ }
+
+ getUserEmail() {
+ return this.cacheService.getLocal('email') || '';
+ }
+
goToTutorial() {
this.navCtrl.push(TutorialPage);
}
+
goToTermConditions() {
this.navCtrl.push(TermsConditionsPage);
}
+
logout() {
let loader = this.loadingCtrl.create({
spinner: 'hide',
content: this.logoutMessage
});
loader.present().then(() => {
- this.cache.clear().then(() => {
+ this.cacheService.clear().then(() => {
loader.dismiss();
this.navCtrl.push(LoginPage);
localStorage.clear();
diff --git a/src/services/assessment.service.ts b/src/services/assessment.service.ts
index dbc0e492..1cf66486 100755
--- a/src/services/assessment.service.ts
+++ b/src/services/assessment.service.ts
@@ -98,9 +98,7 @@ export class AssessmentService {
}
post(assessmentAnswer: Submission) {
- return this.request.post('api/assessment_submissions.json', assessmentAnswer, {
- 'Content-Type': 'application/json'
- });
+ return this.request.post('api/assessment_submissions.json', assessmentAnswer);
}
/**
diff --git a/src/services/auth.service.ts b/src/services/auth.service.ts
index c7997d4b..d9a03d3c 100755
--- a/src/services/auth.service.ts
+++ b/src/services/auth.service.ts
@@ -11,7 +11,9 @@ export class AuthService {
public request: RequestService,
) {}
private postRequest(type, body) {
- return this.request.post(AUTH_ENDPOINT + type, body);
+ return this.request.post(AUTH_ENDPOINT + type, body, {
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ });
}
verifyRegistration(data) {
let email = data.email;
@@ -38,7 +40,9 @@ export class AuthService {
return this.postRequest('reset_password', { key, email, password, verify_password });
}
magicLinkLogin(auth_token) {
- return this.request.post('api/auths.json', { auth_token });
+ return this.request.post('api/auths.json', { auth_token }, {
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ });
}
getUser() {
return this.request.get('api/users.json');
diff --git a/src/services/event.service.ts b/src/services/event.service.ts
index cef12242..a789ad14 100755
--- a/src/services/event.service.ts
+++ b/src/services/event.service.ts
@@ -51,7 +51,7 @@ export class EventService {
* @param {integer} eventId single event id
*/
bookEvent(eventId) {
- return this.request.post(this.bookEventUrl, { event_id: eventId});
+ return this.request.post(this.bookEventUrl, { event_id: eventId });
}
cancelEventBooking(eventId){
diff --git a/src/services/game.service.ts b/src/services/game.service.ts
index 13c5dc53..da72521f 100644
--- a/src/services/game.service.ts
+++ b/src/services/game.service.ts
@@ -31,9 +31,7 @@ export class GameService {
* @param {object} data
*/
postCharacter(data) {
- return this.request.post('api/characters', data, {
- headers: new HttpHeaders().set('Content-Type', 'application/json')
- });
+ return this.request.post('api/characters', data);
}
/**
* Get ranking
@@ -79,8 +77,6 @@ export class GameService {
"id": null
}
}) {
- return this.request.post('api/items.json', options, {
- headers: new HttpHeaders().set('Content-Type', 'application/json')
- });
+ return this.request.post('api/items.json', options);
}
}
diff --git a/src/shared/cache/cache.service.ts b/src/shared/cache/cache.service.ts
index 42e4e050..cfdb856d 100755
--- a/src/shared/cache/cache.service.ts
+++ b/src/shared/cache/cache.service.ts
@@ -31,6 +31,7 @@ export class CacheService {
}
/**
+ * DEPRECATED
* get memory cached values by key
* @param {object||string}
*/
@@ -42,6 +43,7 @@ export class CacheService {
}
/**
+ * DEPRECATED
* Write data into local storage
* @param {string} path - path to store data
* @param {any} content - data to store
@@ -57,6 +59,7 @@ export class CacheService {
}
/**
+ * DEPRECATED
* Read data into local storage
* @param {string} path - path to read data
* @return {promise}
@@ -92,6 +95,9 @@ export class CacheService {
}
}
+ /**
+ * DEPRECATED
+ */
public clear(): any {
return this.storage.clear();
}
diff --git a/src/shared/request/request.service.ts b/src/shared/request/request.service.ts
index 903fb2ab..7c397880 100755
--- a/src/shared/request/request.service.ts
+++ b/src/shared/request/request.service.ts
@@ -65,31 +65,35 @@ export class RequestService {
return Observable.throw(currentError);
}
// Inject required fields to header of API request
- appendHeader(customHeader: any = {
- 'contentType': 'application/json',
- 'apikey': null
- }): HttpHeaders {
- let result:any;
- let headers = new HttpHeaders();
- result = headers.set('Content-Type', customHeader.contentType);
+ appendHeader(custom: object = {}): HttpHeaders {
+ // Define default header
+ custom = _.merge({
+ 'content-type': 'application/json'
+ }, custom);
+
+ let header: HttpHeaders = new HttpHeaders();
+
+ _.forEach(custom, (value, key) => {
+ header = header.set(key, _.toString(value));
+ });
+
// Inject apiKey from cached
- let apiKey = this.cacheService.getCached('apikey') ||
- this.cacheService.getLocal('apikey');
+ let apiKey = this.cacheService.getLocal('apikey');
if (!_.isEmpty(apiKey)) {
- result = result.set('apikey', apiKey.toString());
+ header = header.set('apikey', _.toString(apiKey));
}
// Inject timelineID from cached
- let timelineId = this.cacheService.getCached('timelineID') ||
- this.cacheService.getLocal('timelineID');
+ let timelineId = this.cacheService.getLocal('timelineID');
if (timelineId) {
- result = result.set('timelineID', timelineId.toString());
+ header = header.set('timelineID', _.toString(timelineId));
}
- return result;
+
+ return header;
}
// Set API request options
setOptions(options?): {
headers?: HttpHeaders;
- observe?: "body";
+ observe?: 'body';
params?: HttpParams;
reportProgress?: boolean;
withCredentials?: boolean;
@@ -100,7 +104,7 @@ export class RequestService {
let params = (options && options.params) ? options.params : new HttpParams();
if (options && options.search) {
_.each(options.search, (value, key) => {
- params = params.set(key, value.toString());
+ params = params.set(key, _.toString(value));
});
}
let timelineId = this.cacheService.getLocal('timelineID');
@@ -132,10 +136,8 @@ export class RequestService {
* @param {Object} header
*/
post(endPoint: string, data: any, header?: any) {
- let headers = this.appendHeader();
- // @TODO: make sure if Content-Type is optional
- headers = headers.delete('Content-Type');
- headers = headers.set('Content-Type', 'application/x-www-form-urlencoded');
+ let headers = this.appendHeader(header);
+
return this.http.post(this.prefixUrl + endPoint, data, { headers })
.map(this.extractData)
.catch(this.handleError);