feat: check for files beta role (#986)

This commit is contained in:
Aman Harwara
2022-04-19 23:09:28 +05:30
committed by GitHub
parent 9f8c402e1a
commit 925504de32
3 changed files with 25 additions and 12 deletions

View File

@@ -8,13 +8,7 @@ import { FunctionComponent } from 'preact'
import { useCallback, useEffect, useRef, useState } from 'preact/hooks'
import { Icon } from '@/Components/Icon'
import { useCloseOnBlur } from '@/Hooks/useCloseOnBlur'
import {
ChallengeReason,
ContentType,
FeatureIdentifier,
FeatureStatus,
SNFile,
} from '@standardnotes/snjs'
import { ChallengeReason, ContentType, SNFile } from '@standardnotes/snjs'
import { confirmDialog } from '@/Services/AlertService'
import { addToast, dismissToast, ToastType } from '@standardnotes/stylekit'
import { StreamingFileReader } from '@standardnotes/filepicker'
@@ -78,9 +72,7 @@ export const AttachedFilesButton: FunctionComponent<Props> = observer(
}, [application, reloadAttachedFilesCount])
const toggleAttachedFilesMenu = useCallback(async () => {
if (
application.features.getFeatureStatus(FeatureIdentifier.Files) !== FeatureStatus.Entitled
) {
if (!appState.features.isEntitledToFiles) {
premiumModal.activate('Files')
return
}
@@ -107,7 +99,7 @@ export const AttachedFilesButton: FunctionComponent<Props> = observer(
setOpen(newOpenState)
}
}, [application.features, onClickPreprocessing, open, premiumModal])
}, [appState.features.isEntitledToFiles, onClickPreprocessing, open, premiumModal])
const deleteFile = async (file: SNFile) => {
const shouldDelete = await confirmDialog({

View File

@@ -989,7 +989,7 @@ export class NoteView extends PureComponent<Props, State> {
)}
</div>
</div>
{window.enabledUnfinishedFeatures && (
{this.appState.features.isFilesEnabled && (
<div className="mr-3">
<AttachedFilesButton
application={this.application}

View File

@@ -1,3 +1,4 @@
import { isDev } from '@/Utils'
import { ApplicationEvent, FeatureIdentifier, FeatureStatus } from '@standardnotes/snjs'
import { action, computed, makeObservable, observable, runInAction, when } from 'mobx'
import { WebApplication } from '../Application'
@@ -16,6 +17,7 @@ export class FeaturesState {
_hasFolders = false
_hasSmartViews = false
_hasFilesBeta = false
_premiumAlertFeatureName: string | undefined
private unsub: () => void
@@ -23,6 +25,7 @@ export class FeaturesState {
constructor(private application: WebApplication) {
this._hasFolders = this.hasNativeFolders()
this._hasSmartViews = this.hasNativeSmartViews()
this._hasFilesBeta = this.isEntitledToFilesBeta()
this._premiumAlertFeatureName = undefined
makeObservable(this, {
@@ -44,6 +47,7 @@ export class FeaturesState {
runInAction(() => {
this._hasFolders = this.hasNativeFolders()
this._hasSmartViews = this.hasNativeSmartViews()
this._hasFilesBeta = this.isEntitledToFilesBeta()
})
break
default:
@@ -64,6 +68,14 @@ export class FeaturesState {
return this._hasSmartViews
}
public get isFilesEnabled(): boolean {
return this._hasFilesBeta || window.enabledUnfinishedFeatures || isDev
}
public get isEntitledToFiles(): boolean {
return this._hasFilesBeta
}
public async showPremiumAlert(featureName: string): Promise<void> {
this._premiumAlertFeatureName = featureName
return when(() => this._premiumAlertFeatureName === undefined)
@@ -84,4 +96,13 @@ export class FeaturesState {
return status === FeatureStatus.Entitled
}
private isEntitledToFilesBeta(): boolean {
if (window.enabledUnfinishedFeatures) {
return true
}
const status = this.application.features.getFeatureStatus(FeatureIdentifier.FilesBeta)
return status === FeatureStatus.Entitled
}
}