You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.7 KiB
TypeScript
97 lines
2.7 KiB
TypeScript
import { Injectable } from '@angular/core';
|
|
import { TranslatorService } from '../translator/translator.service';
|
|
import { CommonService } from '../common/common.service';
|
|
import { Platform } from '@ionic/angular';
|
|
import { AppRate } from '@ionic-native/app-rate/ngx';
|
|
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
})
|
|
export class RateService {
|
|
public static done = 'done';
|
|
private static app = 'full-app-rate';
|
|
|
|
constructor(
|
|
public ts: TranslatorService,
|
|
public cs: CommonService,
|
|
public platform: Platform,
|
|
public appRate: AppRate
|
|
) {
|
|
|
|
}
|
|
|
|
public rateFeature(ratedFeedBack?: any, featureKey: string = RateService.app, delay: number = 2000) {
|
|
if (this.isRated(featureKey)) {
|
|
if (ratedFeedBack) {
|
|
ratedFeedBack(true);
|
|
}
|
|
} else {
|
|
setTimeout(() => {
|
|
this.startRating(featureKey, ratedFeedBack);
|
|
}, delay);
|
|
}
|
|
}
|
|
|
|
private startRating(featureKey: string, ratedFeedBack?: any) {
|
|
if (this.cs.isCordova()) {
|
|
this.platform.ready().then(() => {
|
|
this.appRate.preferences = {
|
|
displayAppName: this.ts.trPK('general', 'app-name'),
|
|
promptAgainForEachNewVersion: true,
|
|
// inAppReview: true,
|
|
storeAppURL: {
|
|
ios: 'com.ejada.hmg',
|
|
android: 'market://details?id=com.ejada.hmg',
|
|
},
|
|
customLocale: this.getCustomLocals(),
|
|
callbacks: {
|
|
handleNegativeFeedback: () => {
|
|
this.setAsRated(featureKey);
|
|
//this.cs.openFeedback();
|
|
},
|
|
onButtonClicked: (buttonIndex) => {
|
|
// when user click rate
|
|
if (buttonIndex == 3) {
|
|
this.setAsRated(featureKey);
|
|
if (ratedFeedBack) {
|
|
ratedFeedBack(true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
this.appRate.promptForRating(true);
|
|
});
|
|
|
|
} else {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private getCustomLocals() {
|
|
return {
|
|
title: this.ts.trPK('rate', 'mind'),
|
|
message: this.ts.trPK('rate', 'thanks'),
|
|
cancelButtonLabel: this.ts.trPK('rate', 'cancel'),
|
|
laterButtonLabel: this.ts.trPK('rate', 'later'),
|
|
rateButtonLabel: this.ts.trPK('rate', 'rate'),
|
|
yesButtonLabel: this.ts.trPK('rate', 'yes'),
|
|
noButtonLabel: this.ts.trPK('rate', 'not'),
|
|
appRatePromptTitle: this.ts.trPK('rate', 'like'),
|
|
feedbackPromptTitle: this.ts.trPK('rate', 'feedback'),
|
|
};
|
|
}
|
|
private setAsRated(featureKey: string) {
|
|
localStorage.setItem(featureKey, RateService.done);
|
|
}
|
|
|
|
public isRated(featureKey: string = RateService.app) {
|
|
return localStorage.getItem(featureKey) == RateService.done;
|
|
}
|
|
|
|
public removeRate(featureKey: string = RateService.app) {
|
|
return localStorage.removeItem(featureKey);
|
|
}
|
|
}
|