refactor(web): dependency management (#2386)
This commit is contained in:
@@ -5,39 +5,22 @@ import { FunctionComponent, KeyboardEventHandler, UIEventHandler, useCallback }
|
||||
import { FOCUSABLE_BUT_NOT_TABBABLE, NOTES_LIST_SCROLL_THRESHOLD } from '@/Constants/Constants'
|
||||
import { ListableContentItem } from './Types/ListableContentItem'
|
||||
import ContentListItem from './ContentListItem'
|
||||
import { ItemListController } from '@/Controllers/ItemList/ItemListController'
|
||||
import { FilesController } from '@/Controllers/FilesController'
|
||||
import { SelectedItemsController } from '@/Controllers/SelectedItemsController'
|
||||
import { NavigationController } from '@/Controllers/Navigation/NavigationController'
|
||||
import { NotesController } from '@/Controllers/NotesController/NotesController'
|
||||
import { ElementIds } from '@/Constants/ElementIDs'
|
||||
import { classNames } from '@standardnotes/utils'
|
||||
import { ContentType, SNTag } from '@standardnotes/snjs'
|
||||
import { ItemListController } from '@/Controllers/ItemList/ItemListController'
|
||||
|
||||
type Props = {
|
||||
application: WebApplication
|
||||
filesController: FilesController
|
||||
itemListController: ItemListController
|
||||
items: ListableContentItem[]
|
||||
navigationController: NavigationController
|
||||
notesController: NotesController
|
||||
selectionController: SelectedItemsController
|
||||
selectedUuids: SelectedItemsController['selectedUuids']
|
||||
selectedUuids: ItemListController['selectedUuids']
|
||||
paginate: () => void
|
||||
}
|
||||
|
||||
const ContentList: FunctionComponent<Props> = ({
|
||||
application,
|
||||
filesController,
|
||||
itemListController,
|
||||
items,
|
||||
navigationController,
|
||||
notesController,
|
||||
selectionController,
|
||||
selectedUuids,
|
||||
paginate,
|
||||
}) => {
|
||||
const { selectPreviousItem, selectNextItem } = selectionController
|
||||
const ContentList: FunctionComponent<Props> = ({ application, items, selectedUuids, paginate }) => {
|
||||
const { filesController, itemListController, navigationController, notesController } = application
|
||||
|
||||
const { selectPreviousItem, selectNextItem } = itemListController
|
||||
const { hideTags, hideDate, hideNotePreview, hideEditorIcon } = itemListController.webDisplayOptions
|
||||
const { sortBy } = itemListController.displayOptions
|
||||
const selectedTag = navigationController.selected
|
||||
@@ -68,9 +51,9 @@ const ContentList: FunctionComponent<Props> = ({
|
||||
|
||||
const selectItem = useCallback(
|
||||
(item: ListableContentItem, userTriggered?: boolean) => {
|
||||
return selectionController.selectItem(item.uuid, userTriggered)
|
||||
return itemListController.selectItem(item.uuid, userTriggered)
|
||||
},
|
||||
[selectionController],
|
||||
[itemListController],
|
||||
)
|
||||
|
||||
const getTagsForItem = useCallback(
|
||||
|
||||
@@ -14,22 +14,13 @@ import { observer } from 'mobx-react-lite'
|
||||
import { forwardRef, useCallback, useEffect, useMemo } from 'react'
|
||||
import ContentList from '@/Components/ContentListView/ContentList'
|
||||
import NoAccountWarning from '@/Components/NoAccountWarning/NoAccountWarning'
|
||||
import { ItemListController } from '@/Controllers/ItemList/ItemListController'
|
||||
import { SelectedItemsController } from '@/Controllers/SelectedItemsController'
|
||||
import { NavigationController } from '@/Controllers/Navigation/NavigationController'
|
||||
import { FilesController } from '@/Controllers/FilesController'
|
||||
import { NoAccountWarningController } from '@/Controllers/NoAccountWarningController'
|
||||
import { NotesController } from '@/Controllers/NotesController/NotesController'
|
||||
import { AccountMenuController } from '@/Controllers/AccountMenu/AccountMenuController'
|
||||
import { ElementIds } from '@/Constants/ElementIDs'
|
||||
import ContentListHeader from './Header/ContentListHeader'
|
||||
import { AppPaneId } from '../Panes/AppPaneMetadata'
|
||||
import { useResponsiveAppPane } from '../Panes/ResponsivePaneProvider'
|
||||
import SearchBar from '../SearchBar/SearchBar'
|
||||
import { SearchOptionsController } from '@/Controllers/SearchOptionsController'
|
||||
import { classNames } from '@standardnotes/utils'
|
||||
import { useFileDragNDrop } from '../FileDragNDropProvider'
|
||||
import { LinkingController } from '@/Controllers/LinkingController'
|
||||
import DailyContentList from './Daily/DailyContentList'
|
||||
import { ListableContentItem } from './Types/ListableContentItem'
|
||||
import { FeatureName } from '@/Controllers/FeatureName'
|
||||
@@ -37,29 +28,14 @@ import { PanelResizedData } from '@/Types/PanelResizedData'
|
||||
import { useForwardedRef } from '@/Hooks/useForwardedRef'
|
||||
import FloatingAddButton from './FloatingAddButton'
|
||||
import ContentTableView from '../ContentTableView/ContentTableView'
|
||||
import { FeaturesController } from '@/Controllers/FeaturesController'
|
||||
import { MutuallyExclusiveMediaQueryBreakpoints, useMediaQuery } from '@/Hooks/useMediaQuery'
|
||||
import { HistoryModalController } from '@/Controllers/NoteHistory/HistoryModalController'
|
||||
import { PaneController } from '@/Controllers/PaneController/PaneController'
|
||||
import EmptyFilesView from './EmptyFilesView'
|
||||
import { PaneLayout } from '@/Controllers/PaneController/PaneLayout'
|
||||
import { usePaneSwipeGesture } from '../Panes/usePaneGesture'
|
||||
import { mergeRefs } from '@/Hooks/mergeRefs'
|
||||
|
||||
type Props = {
|
||||
accountMenuController: AccountMenuController
|
||||
application: WebApplication
|
||||
filesController: FilesController
|
||||
itemListController: ItemListController
|
||||
navigationController: NavigationController
|
||||
noAccountWarningController: NoAccountWarningController
|
||||
notesController: NotesController
|
||||
selectionController: SelectedItemsController
|
||||
searchOptionsController: SearchOptionsController
|
||||
linkingController: LinkingController
|
||||
featuresController: FeaturesController
|
||||
historyModalController: HistoryModalController
|
||||
paneController: PaneController
|
||||
className?: string
|
||||
id: string
|
||||
children?: React.ReactNode
|
||||
@@ -67,30 +43,20 @@ type Props = {
|
||||
}
|
||||
|
||||
const ContentListView = forwardRef<HTMLDivElement, Props>(
|
||||
(
|
||||
{
|
||||
({ application, className, id, children, onPanelWidthLoad }, ref) => {
|
||||
const {
|
||||
paneController,
|
||||
accountMenuController,
|
||||
application,
|
||||
filesController,
|
||||
itemListController,
|
||||
navigationController,
|
||||
noAccountWarningController,
|
||||
notesController,
|
||||
selectionController,
|
||||
searchOptionsController,
|
||||
linkingController,
|
||||
featuresController,
|
||||
historyModalController,
|
||||
paneController,
|
||||
className,
|
||||
id,
|
||||
children,
|
||||
onPanelWidthLoad,
|
||||
},
|
||||
ref,
|
||||
) => {
|
||||
} = application
|
||||
|
||||
const { setPaneLayout, panes } = useResponsiveAppPane()
|
||||
const { selectedUuids, selectNextItem, selectPreviousItem } = selectionController
|
||||
|
||||
const { selected: selectedTag, selectedAsTag } = navigationController
|
||||
const {
|
||||
completedFullSync,
|
||||
@@ -102,6 +68,9 @@ const ContentListView = forwardRef<HTMLDivElement, Props>(
|
||||
items,
|
||||
isCurrentNoteTemplate,
|
||||
isTableViewEnabled,
|
||||
selectedUuids,
|
||||
selectNextItem,
|
||||
selectPreviousItem,
|
||||
} = itemListController
|
||||
|
||||
const innerRef = useForwardedRef(ref)
|
||||
@@ -260,7 +229,7 @@ const ContentListView = forwardRef<HTMLDivElement, Props>(
|
||||
}
|
||||
|
||||
event.preventDefault()
|
||||
selectionController.selectAll()
|
||||
itemListController.selectAll()
|
||||
},
|
||||
},
|
||||
])
|
||||
@@ -268,9 +237,9 @@ const ContentListView = forwardRef<HTMLDivElement, Props>(
|
||||
addNewItem,
|
||||
application.keyboardService,
|
||||
createNewNote,
|
||||
itemListController,
|
||||
selectNextItem,
|
||||
selectPreviousItem,
|
||||
selectionController,
|
||||
shouldUseTableView,
|
||||
])
|
||||
|
||||
@@ -289,13 +258,13 @@ const ContentListView = forwardRef<HTMLDivElement, Props>(
|
||||
|
||||
const handleDailyListSelection = useCallback(
|
||||
async (item: ListableContentItem, userTriggered: boolean) => {
|
||||
await selectionController.selectItemWithScrollHandling(item, {
|
||||
await itemListController.selectItemWithScrollHandling(item, {
|
||||
userTriggered: true,
|
||||
scrollIntoView: userTriggered === false,
|
||||
animated: false,
|
||||
})
|
||||
},
|
||||
[selectionController],
|
||||
[itemListController],
|
||||
)
|
||||
|
||||
useEffect(() => {
|
||||
@@ -371,29 +340,13 @@ const ContentListView = forwardRef<HTMLDivElement, Props>(
|
||||
) : null}
|
||||
{!dailyMode && renderedItems.length ? (
|
||||
shouldUseTableView ? (
|
||||
<ContentTableView
|
||||
items={items}
|
||||
application={application}
|
||||
filesController={filesController}
|
||||
featuresController={featuresController}
|
||||
linkingController={linkingController}
|
||||
navigationController={navigationController}
|
||||
notesController={notesController}
|
||||
historyModalController={historyModalController}
|
||||
itemListController={itemListController}
|
||||
selectionController={selectionController}
|
||||
/>
|
||||
<ContentTableView items={items} application={application} />
|
||||
) : (
|
||||
<ContentList
|
||||
items={renderedItems}
|
||||
selectedUuids={selectedUuids}
|
||||
application={application}
|
||||
paginate={paginate}
|
||||
filesController={filesController}
|
||||
itemListController={itemListController}
|
||||
navigationController={navigationController}
|
||||
notesController={notesController}
|
||||
selectionController={selectionController}
|
||||
/>
|
||||
)
|
||||
) : null}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { FunctionComponent, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'
|
||||
import { ListableContentItem } from '../Types/ListableContentItem'
|
||||
import { ItemListController } from '@/Controllers/ItemList/ItemListController'
|
||||
import { SelectedItemsController } from '@/Controllers/SelectedItemsController'
|
||||
import { useResponsiveAppPane } from '../../Panes/ResponsivePaneProvider'
|
||||
import { AppPaneId } from '../../Panes/AppPaneMetadata'
|
||||
import {
|
||||
@@ -25,7 +24,7 @@ type Props = {
|
||||
items: ListableContentItem[]
|
||||
onSelect: (item: ListableContentItem, userTriggered: boolean) => Promise<void>
|
||||
selectedTag: SNTag
|
||||
selectedUuids: SelectedItemsController['selectedUuids']
|
||||
selectedUuids: ItemListController['selectedUuids']
|
||||
}
|
||||
|
||||
const PageSize = 10
|
||||
|
||||
@@ -93,7 +93,7 @@ const DisplayOptionsMenu: FunctionComponent<DisplayOptionsMenuProps> = ({
|
||||
: selectedTag.preferences
|
||||
const [currentMode, setCurrentMode] = useState<PreferenceMode>(selectedTagPreferences ? 'tag' : 'global')
|
||||
const [preferences, setPreferences] = useState<TagPreferences>({})
|
||||
const hasSubscription = application.controllers.subscriptionController.hasFirstPartyOnlineOrOfflineSubscription
|
||||
const hasSubscription = application.subscriptionController.hasFirstPartyOnlineOrOfflineSubscription
|
||||
const controlsDisabled = currentMode === 'tag' && !hasSubscription
|
||||
const isDailyEntry = selectedTagPreferences?.entryMode === 'daily'
|
||||
|
||||
@@ -181,7 +181,7 @@ const DisplayOptionsMenu: FunctionComponent<DisplayOptionsMenuProps> = ({
|
||||
} else if (isSystemTag) {
|
||||
await changeSystemViewPreferences(properties)
|
||||
} else {
|
||||
await application.changeAndSaveItem<TagMutator>(selectedTag, (mutator) => {
|
||||
await application.changeAndSaveItem.execute<TagMutator>(selectedTag, (mutator) => {
|
||||
mutator.preferences = {
|
||||
...mutator.preferences,
|
||||
...properties,
|
||||
@@ -202,7 +202,7 @@ const DisplayOptionsMenu: FunctionComponent<DisplayOptionsMenuProps> = ({
|
||||
return
|
||||
}
|
||||
|
||||
void application.changeAndSaveItem<TagMutator>(selectedTag, (mutator) => {
|
||||
void application.changeAndSaveItem.execute<TagMutator>(selectedTag, (mutator) => {
|
||||
mutator.preferences = undefined
|
||||
})
|
||||
}, [application, isSystemTag, reloadPreferences, selectedTag])
|
||||
|
||||
@@ -231,7 +231,7 @@ const NewNotePreferences: FunctionComponent<Props> = ({
|
||||
onClick={(event) => {
|
||||
if (application.isNativeMobileWeb()) {
|
||||
event.preventDefault()
|
||||
application.mobileDevice().openUrl(HelpPageUrl)
|
||||
application.mobileDevice.openUrl(HelpPageUrl)
|
||||
}
|
||||
}}
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user