fix: Fixes issue where selecting a third-party editor/note-type as default for a tag would not correctly apply editor

This commit is contained in:
Mo
2023-08-01 13:53:15 -05:00
parent fe77508061
commit 73609ca7e3
4 changed files with 24 additions and 6 deletions

View File

@@ -31,6 +31,7 @@ export interface ComponentManagerInterface {
setPermissionDialogUIHandler(handler: (dialog: PermissionDialog) => void): void
findComponentWithPackageIdentifier(identifier: string): ComponentInterface | undefined
editorForNote(note: SNNote): UIFeature<EditorFeatureDescription | IframeComponentFeatureDescription>
getDefaultEditorIdentifier(currentTag?: SNTag): string

View File

@@ -358,6 +358,12 @@ export class SNComponentManager
return this.viewers.find((viewer) => viewer.identifier === identifier)
}
public findComponentWithPackageIdentifier(identifier: string): ComponentInterface | undefined {
return this.items.getDisplayableComponents().find((component) => {
return component.identifier === identifier
})
}
private componentViewerForSessionKey(key: string): ComponentViewerInterface | undefined {
return this.viewers.find((viewer) => viewer.sessionKey === key)
}

View File

@@ -119,12 +119,23 @@ const NewNotePreferences: FunctionComponent<Props> = ({
const selectEditorForNewNoteDefault = useCallback(
(value: EditorOption['value']) => {
const uuid = Uuid.create(value)
let identifier: NativeFeatureIdentifier | Uuid | undefined = undefined
const feature = NativeFeatureIdentifier.create(value)
if (
application.features.getFeatureStatus(!uuid.isFailed() ? uuid.getValue() : feature.getValue()) !==
FeatureStatus.Entitled
) {
if (!feature.isFailed()) {
identifier = feature.getValue()
} else {
const thirdPartyEditor = application.componentManager.findComponentWithPackageIdentifier(value)
if (thirdPartyEditor) {
identifier = Uuid.create(thirdPartyEditor.uuid).getValue()
}
}
if (!identifier) {
return
}
if (application.features.getFeatureStatus(identifier) !== FeatureStatus.Entitled) {
const editorItem = editorItems.find((item) => item.value === value)
if (editorItem) {
premiumModal.activate(editorItem.label)

View File

@@ -39,7 +39,7 @@ export function getDropdownItemsForAllEditors(application: WebApplicationInterfa
return {
label: editor.displayName,
value: editor.uuid,
value: editor.identifier,
...(iconType ? { icon: iconType } : null),
...(tint ? { iconClassName: `text-accessory-tint-${tint}` } : null),
}