Proactively ask users for feedback based on ITSREligibilityCheck
Summary: Gets the rating popover to appear automatically after 30s for selected users, according to ITSR constraints. The ITSR constraints are to stop it annoying people, such as only happening once a month, and global throttling. Reviewed By: passy Differential Revision: D17343435 fbshipit-source-id: c06aa10263a64249f7e2c48b8752c37e4314ac24
This commit is contained in:
committed by
Facebook Github Bot
parent
d3be6357ef
commit
9ee487cf43
@@ -30,6 +30,7 @@ type State = {
|
||||
promptData: FeedbackPrompt | null;
|
||||
isShown: boolean;
|
||||
userIsEligible: boolean;
|
||||
hasTriggered: boolean;
|
||||
};
|
||||
|
||||
type NextAction = 'select-rating' | 'leave-comment' | 'finished';
|
||||
@@ -257,6 +258,7 @@ export default class RatingButton extends Component<Props, State> {
|
||||
promptData: null,
|
||||
isShown: false,
|
||||
userIsEligible: !useEligibilityCheck,
|
||||
hasTriggered: false,
|
||||
};
|
||||
|
||||
constructor(props: Props) {
|
||||
@@ -268,7 +270,7 @@ export default class RatingButton extends Component<Props, State> {
|
||||
|
||||
onClick() {
|
||||
const willBeShown = !this.state.isShown;
|
||||
this.setState({isShown: willBeShown});
|
||||
this.setState({isShown: willBeShown, hasTriggered: true});
|
||||
if (!willBeShown && useEligibilityCheck) {
|
||||
UserFeedback.dismiss();
|
||||
}
|
||||
@@ -292,6 +294,19 @@ export default class RatingButton extends Component<Props, State> {
|
||||
);
|
||||
}
|
||||
|
||||
triggerPopover() {
|
||||
if (!this.state.hasTriggered) {
|
||||
this.setState({isShown: true, hasTriggered: true});
|
||||
}
|
||||
}
|
||||
|
||||
setIsEligible(isEligible: boolean) {
|
||||
this.setState({userIsEligible: isEligible});
|
||||
if (isEligible) {
|
||||
setTimeout(this.triggerPopover.bind(this), 30000);
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
if (!GK.get('flipper_rating')) {
|
||||
return null;
|
||||
@@ -299,7 +314,7 @@ export default class RatingButton extends Component<Props, State> {
|
||||
if (!this.state.userIsEligible) {
|
||||
return (
|
||||
<UserFeedback.StarRatingsEligibilityChecker
|
||||
callback={isEligible => this.setState({userIsEligible: isEligible})}
|
||||
callback={this.setIsEligible.bind(this)}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user