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.
mohemmhmg/Mohem/src/app/hmg-common/services/rate/rate.service.ts

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);
}
}