refactor(web): dependency management (#2386)

This commit is contained in:
Mo
2023-08-05 12:48:39 -05:00
committed by GitHub
parent b07da5b663
commit d8d4052a52
274 changed files with 4065 additions and 3873 deletions

View File

@@ -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(

View File

@@ -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}

View File

@@ -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

View File

@@ -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])

View File

@@ -231,7 +231,7 @@ const NewNotePreferences: FunctionComponent<Props> = ({
onClick={(event) => {
if (application.isNativeMobileWeb()) {
event.preventDefault()
application.mobileDevice().openUrl(HelpPageUrl)
application.mobileDevice.openUrl(HelpPageUrl)
}
}}
>