Skip to content

Commit

Permalink
chore: 사용자가 예약 기능을 써본 적 있는지 여부 플래그 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
potados99 committed Oct 3, 2021
1 parent a492f01 commit 531b2bc
Showing 1 changed file with 35 additions and 4 deletions.
39 changes: 35 additions & 4 deletions src/presentation/features/booking/BookingStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,14 @@ export default class BookingStore {
this._onboardingHasShown = value;
}

protected _usedToBookingFeature = false;
get usedToBookingFeature() {
return this._usedToBookingFeature;
}
set usedToBookingFeature(value) {
this._usedToBookingFeature = value;
}

private _groupedBookingOptions: Map<number, GroupedBookingOptionsView> = new Map();
getGroupedBookingOptions(cafeteriaId: number) {
return this._groupedBookingOptions.get(cafeteriaId);
Expand Down Expand Up @@ -78,22 +86,40 @@ export default class BookingStore {
makeAutoObservable(this);
}

async fetchOnboardingShownStatus() {
async fetchFlags() {
this.onboardingHasShown = (await AsyncStorage.getItem('booking_onboarding_has_shown')) === 'true';
this.usedToBookingFeature = (await AsyncStorage.getItem('used_to_booking_feature')) === 'true';
}

/**
* 온보딩 완료로 마크하고 플래그를 영속합니다.
*/
async doneOnboarding() {
this.onboardingHasShown = true;
await this.persistOnboardingShownStatus();
await this.persistFlags();
}

/**
* 온보딩 필요로 마크하나, 플래그를 영속하지는 않습니다.
* 온보딩을 완료한 사람에게도 한 번 보여주기 위한 용도입니다.
*/
async showOnboardingOnce() {
this.onboardingHasShown = false;
}

/**
* 온보딩 필요로 마크하고, 플래그를 영속합니다.
* 온보딩을 한 적이 없는 것처럼 됩니다.
*/
async resetOnboarding() {
this.onboardingHasShown = false;
await this.persistOnboardingShownStatus();
this.usedToBookingFeature = false;
await this.persistFlags();
}

protected async persistOnboardingShownStatus() {
protected async persistFlags() {
await AsyncStorage.setItem('booking_onboarding_has_shown', String(this.onboardingHasShown));
await AsyncStorage.setItem('used_to_booking_feature', String(this.usedToBookingFeature));
}

async fetchBookingOptions(cafeteria: CafeteriaView) {
Expand All @@ -120,6 +146,11 @@ export default class BookingStore {
});

this.currentOption = undefined;

// 예약을 1회 이상 한 시점에서는
// usedToBookingFeature(예약 기능에 익숙한가)가 true.
this.usedToBookingFeature = true;
await this.persistFlags();
}

async dismissCurrentOption() {
Expand Down

0 comments on commit 531b2bc

Please sign in to comment.