Use API for eligibility check
Summary: Change flipper from using the dodgy webview check that requires auth, to using the interngraph api for eligibility checking. Reviewed By: passy Differential Revision: D17498724 fbshipit-source-id: b81fd8b7b0bd36a7fcf73ba05d9885b61e420c61
This commit is contained in:
committed by
Facebook Github Bot
parent
4e5ede6d37
commit
e871822a05
@@ -20,8 +20,6 @@ import GK from '../fb-stubs/GK';
|
|||||||
import * as UserFeedback from '../fb-stubs/UserFeedback';
|
import * as UserFeedback from '../fb-stubs/UserFeedback';
|
||||||
import {FeedbackPrompt} from '../fb-stubs/UserFeedback';
|
import {FeedbackPrompt} from '../fb-stubs/UserFeedback';
|
||||||
|
|
||||||
const useEligibilityCheck = GK.get('flipper_use_itsr_eligibility_check');
|
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
onRatingChanged: (rating: number) => void;
|
onRatingChanged: (rating: number) => void;
|
||||||
};
|
};
|
||||||
@@ -29,7 +27,6 @@ type Props = {
|
|||||||
type State = {
|
type State = {
|
||||||
promptData: FeedbackPrompt | null;
|
promptData: FeedbackPrompt | null;
|
||||||
isShown: boolean;
|
isShown: boolean;
|
||||||
userIsEligible: boolean;
|
|
||||||
hasTriggered: boolean;
|
hasTriggered: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -254,24 +251,26 @@ class FeedbackComponent extends Component<
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default class RatingButton extends Component<Props, State> {
|
export default class RatingButton extends Component<Props, State> {
|
||||||
state = {
|
state: State = {
|
||||||
promptData: null,
|
promptData: null,
|
||||||
isShown: false,
|
isShown: false,
|
||||||
userIsEligible: !useEligibilityCheck,
|
|
||||||
hasTriggered: false,
|
hasTriggered: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: Props) {
|
||||||
super(props);
|
super(props);
|
||||||
UserFeedback.getPrompt().then(prompt =>
|
if (GK.get('flipper_rating')) {
|
||||||
this.setState({promptData: prompt}),
|
UserFeedback.getPrompt().then(prompt => {
|
||||||
);
|
this.setState({promptData: prompt});
|
||||||
|
setTimeout(this.triggerPopover.bind(this), 30000);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onClick() {
|
onClick() {
|
||||||
const willBeShown = !this.state.isShown;
|
const willBeShown = !this.state.isShown;
|
||||||
this.setState({isShown: willBeShown, hasTriggered: true});
|
this.setState({isShown: willBeShown, hasTriggered: true});
|
||||||
if (!willBeShown && useEligibilityCheck) {
|
if (!willBeShown) {
|
||||||
UserFeedback.dismiss();
|
UserFeedback.dismiss();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -300,28 +299,17 @@ export default class RatingButton extends Component<Props, State> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setIsEligible(isEligible: boolean) {
|
|
||||||
this.setState({userIsEligible: isEligible});
|
|
||||||
if (isEligible) {
|
|
||||||
setTimeout(this.triggerPopover.bind(this), 30000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
if (!GK.get('flipper_rating')) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (!this.state.userIsEligible) {
|
|
||||||
return (
|
|
||||||
<UserFeedback.StarRatingsEligibilityChecker
|
|
||||||
callback={this.setIsEligible.bind(this)}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
const promptData = this.state.promptData;
|
const promptData = this.state.promptData;
|
||||||
if (!promptData) {
|
if (!promptData) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
if (
|
||||||
|
!promptData.shouldPopup ||
|
||||||
|
(this.state.hasTriggered && !this.state.isShown)
|
||||||
|
) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<div style={{position: 'relative'}}>
|
<div style={{position: 'relative'}}>
|
||||||
<div onClick={this.onClick.bind(this)}>
|
<div onClick={this.onClick.bind(this)}>
|
||||||
|
|||||||
@@ -33,6 +33,3 @@ export async function dismiss(): Promise<void> {
|
|||||||
export async function getPrompt(): Promise<FeedbackPrompt> {
|
export async function getPrompt(): Promise<FeedbackPrompt> {
|
||||||
throw new Error('Method not implemented.');
|
throw new Error('Method not implemented.');
|
||||||
}
|
}
|
||||||
export class StarRatingsEligibilityChecker extends Component<{
|
|
||||||
callback: (userIsEligible: boolean) => void;
|
|
||||||
}> {}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user