mirror of
https://github.com/standardnotes/mobile.git
synced 2026-04-29 02:12:40 -04:00
chore: upgrade dependencies (#625)
* chore: upgrade dependencies * fix: import icons from the correct repo * fix: remove unnecessary code * fix: correct function call * chore: bump snjs * fix: upgrade rnjsi, use urlsafe base64 * fix: error when deleting the note * chore: upgrade deps Co-authored-by: Mo <mo@standardnotes.com>
This commit is contained in:
@@ -295,7 +295,7 @@ PODS:
|
||||
- ReactCommon/turbomodule/core
|
||||
- react-native-segmented-control (2.2.2):
|
||||
- React-Core
|
||||
- react-native-sodium-jsi (1.1.7):
|
||||
- react-native-sodium-jsi (1.2.0):
|
||||
- React-Core
|
||||
- react-native-static-server (0.5.0):
|
||||
- GCDWebServer (~> 3.0)
|
||||
@@ -716,7 +716,7 @@ SPEC CHECKSUMS:
|
||||
react-native-pager-view: b1914469643f40042e65d78cbf3d3dfebd6fb0d9
|
||||
react-native-safe-area-context: da2d11bd7df9bf7779e9bdc85081c141cfa544f4
|
||||
react-native-segmented-control: 65df6cd0619b780b3843d574a72d4c7cec396097
|
||||
react-native-sodium-jsi: 42be5954ce2e66a56f1907e35e2561bcc54a0472
|
||||
react-native-sodium-jsi: c8901320767d00385f9111bc95ba25aaa9a29890
|
||||
react-native-static-server: 201b2a945a35096be3ae7f43e367c65bcbd61343
|
||||
react-native-version-info: a106f23009ac0db4ee00de39574eb546682579b9
|
||||
react-native-webview: 380c1a03ec94b7ed764dac8db1e7c9952d08c93a
|
||||
|
||||
13
package.json
13
package.json
@@ -34,14 +34,15 @@
|
||||
"@react-navigation/elements": "^1.3.3",
|
||||
"@react-navigation/native": "^6.0.10",
|
||||
"@react-navigation/stack": "^6.2.1",
|
||||
"@standardnotes/components": "^1.8.1",
|
||||
"@standardnotes/filepicker": "^1.14.9",
|
||||
"@standardnotes/components": "^1.8.2",
|
||||
"@standardnotes/filepicker": "^1.16.2",
|
||||
"@standardnotes/icons": "^1.1.8",
|
||||
"@standardnotes/react-native-aes": "^1.4.3",
|
||||
"@standardnotes/react-native-textview": "1.0.2",
|
||||
"@standardnotes/react-native-utils": "1.0.1",
|
||||
"@standardnotes/sncrypto-common": "1.8.2",
|
||||
"@standardnotes/snjs": "2.109.6",
|
||||
"@standardnotes/stylekit": "5.26.0",
|
||||
"@standardnotes/sncrypto-common": "1.9.0",
|
||||
"@standardnotes/snjs": "2.114.1",
|
||||
"@standardnotes/stylekit": "5.29.2",
|
||||
"@types/styled-components-react-native": "5.1.3",
|
||||
"js-base64": "^3.7.2",
|
||||
"moment": "^2.29.2",
|
||||
@@ -66,7 +67,7 @@
|
||||
"react-native-search-bar": "standardnotes/react-native-search-bar#7d2139d",
|
||||
"react-native-search-box": "standardnotes/react-native-search-box#c0de5bab18cb418fef75ef2c2cd921304142e492",
|
||||
"react-native-share": "^7.3.7",
|
||||
"react-native-sodium-jsi": "1.1.7",
|
||||
"react-native-sodium-jsi": "1.2.0",
|
||||
"react-native-static-server": "standardnotes/react-native-static-server#d0c4cb0feae233634ef26fc33118f258192c7b7d",
|
||||
"react-native-store-review": "^0.2.0",
|
||||
"react-native-svg": "^12.3.0",
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
import ArchiveIcon from '@standardnotes/icons/dist/mobile-exports/ic-archive.svg'
|
||||
import AttachmentFileIcon from '@standardnotes/icons/dist/mobile-exports/ic-attachment-file.svg'
|
||||
import AuthenticatorIcon from '@standardnotes/icons/dist/mobile-exports/ic-authenticator.svg'
|
||||
import ClearCircleFilledIcon from '@standardnotes/icons/dist/mobile-exports/ic-clear-circle-filled.svg'
|
||||
import CodeIcon from '@standardnotes/icons/dist/mobile-exports/ic-code.svg'
|
||||
import FileDocIcon from '@standardnotes/icons/dist/mobile-exports/ic-file-doc.svg'
|
||||
import FileImageIcon from '@standardnotes/icons/dist/mobile-exports/ic-file-image.svg'
|
||||
import FileMovIcon from '@standardnotes/icons/dist/mobile-exports/ic-file-mov.svg'
|
||||
import FileMusicIcon from '@standardnotes/icons/dist/mobile-exports/ic-file-music.svg'
|
||||
import FileOtherIcon from '@standardnotes/icons/dist/mobile-exports/ic-file-other.svg'
|
||||
import FilePdfIcon from '@standardnotes/icons/dist/mobile-exports/ic-file-pdf.svg'
|
||||
import FilePptIcon from '@standardnotes/icons/dist/mobile-exports/ic-file-ppt.svg'
|
||||
import FileXlsIcon from '@standardnotes/icons/dist/mobile-exports/ic-file-xls.svg'
|
||||
import FileZipIcon from '@standardnotes/icons/dist/mobile-exports/ic-file-zip.svg'
|
||||
import LockFilledIcon from '@standardnotes/icons/dist/mobile-exports/ic-lock-filled.svg'
|
||||
import MarkdownIcon from '@standardnotes/icons/dist/mobile-exports/ic-markdown.svg'
|
||||
import NotesIcon from '@standardnotes/icons/dist/mobile-exports/ic-notes.svg'
|
||||
import OpenInIcon from '@standardnotes/icons/dist/mobile-exports/ic-open-in.svg'
|
||||
import PencilOffIcon from '@standardnotes/icons/dist/mobile-exports/ic-pencil-off.svg'
|
||||
import PinFilledIcon from '@standardnotes/icons/dist/mobile-exports/ic-pin-filled.svg'
|
||||
import SpreadsheetsIcon from '@standardnotes/icons/dist/mobile-exports/ic-spreadsheets.svg'
|
||||
import TasksIcon from '@standardnotes/icons/dist/mobile-exports/ic-tasks.svg'
|
||||
import PlainTextIcon from '@standardnotes/icons/dist/mobile-exports/ic-text-paragraph.svg'
|
||||
import RichTextIcon from '@standardnotes/icons/dist/mobile-exports/ic-text-rich.svg'
|
||||
import TrashFilledIcon from '@standardnotes/icons/dist/mobile-exports/ic-trash-filled.svg'
|
||||
import UserAddIcon from '@standardnotes/icons/dist/mobile-exports/ic-user-add.svg'
|
||||
import FilesIllustration from '@standardnotes/icons/dist/mobile-exports/il-files.svg'
|
||||
import { IconType } from '@standardnotes/snjs'
|
||||
import ArchiveIcon from '@standardnotes/stylekit/dist/icons/ic-archive.svg'
|
||||
import AttachmentFileIcon from '@standardnotes/stylekit/dist/icons/ic-attachment-file.svg'
|
||||
import AuthenticatorIcon from '@standardnotes/stylekit/dist/icons/ic-authenticator.svg'
|
||||
import ClearCircleFilledIcon from '@standardnotes/stylekit/dist/icons/ic-clear-circle-filled.svg'
|
||||
import CodeIcon from '@standardnotes/stylekit/dist/icons/ic-code.svg'
|
||||
import FileDocIcon from '@standardnotes/stylekit/dist/icons/ic-file-doc.svg'
|
||||
import FileImageIcon from '@standardnotes/stylekit/dist/icons/ic-file-image.svg'
|
||||
import FileMovIcon from '@standardnotes/stylekit/dist/icons/ic-file-mov.svg'
|
||||
import FileMusicIcon from '@standardnotes/stylekit/dist/icons/ic-file-music.svg'
|
||||
import FileOtherIcon from '@standardnotes/stylekit/dist/icons/ic-file-other.svg'
|
||||
import FilePdfIcon from '@standardnotes/stylekit/dist/icons/ic-file-pdf.svg'
|
||||
import FilePptIcon from '@standardnotes/stylekit/dist/icons/ic-file-ppt.svg'
|
||||
import FileXlsIcon from '@standardnotes/stylekit/dist/icons/ic-file-xls.svg'
|
||||
import FileZipIcon from '@standardnotes/stylekit/dist/icons/ic-file-zip.svg'
|
||||
import LockIconFilled from '@standardnotes/stylekit/dist/icons/ic-lock-filled.svg'
|
||||
import MarkdownIcon from '@standardnotes/stylekit/dist/icons/ic-markdown.svg'
|
||||
import NotesIcon from '@standardnotes/stylekit/dist/icons/ic-notes.svg'
|
||||
import OpenInIcon from '@standardnotes/stylekit/dist/icons/ic-open-in.svg'
|
||||
import PencilOffIcon from '@standardnotes/stylekit/dist/icons/ic-pencil-off.svg'
|
||||
import PinFilledIcon from '@standardnotes/stylekit/dist/icons/ic-pin-filled.svg'
|
||||
import SpreadsheetsIcon from '@standardnotes/stylekit/dist/icons/ic-spreadsheets.svg'
|
||||
import TasksIcon from '@standardnotes/stylekit/dist/icons/ic-tasks.svg'
|
||||
import PlainTextIcon from '@standardnotes/stylekit/dist/icons/ic-text-paragraph.svg'
|
||||
import RichTextIcon from '@standardnotes/stylekit/dist/icons/ic-text-rich.svg'
|
||||
import TrashFilledIcon from '@standardnotes/stylekit/dist/icons/ic-trash-filled.svg'
|
||||
import UserAddIcon from '@standardnotes/stylekit/dist/icons/ic-user-add.svg'
|
||||
import FilesIllustration from '@standardnotes/stylekit/dist/icons/il-files.svg'
|
||||
import React, { FC, useContext } from 'react'
|
||||
import { SvgProps } from 'react-native-svg'
|
||||
import { ThemeContext } from 'styled-components'
|
||||
@@ -62,7 +62,7 @@ const ICONS: Partial<TIcons> = {
|
||||
'file-xls': FileXlsIcon,
|
||||
'file-zip': FileZipIcon,
|
||||
'clear-circle-filled': ClearCircleFilledIcon,
|
||||
'lock-filled': LockIconFilled,
|
||||
'lock-filled': LockFilledIcon,
|
||||
}
|
||||
|
||||
type Props = {
|
||||
|
||||
@@ -310,7 +310,7 @@ export const useFiles = ({ note }: Props) => {
|
||||
|
||||
const authorizeProtectedActionForFile = useCallback(
|
||||
async (file: FileItem, challengeReason: ChallengeReason) => {
|
||||
const authorizedFiles = await application.protections.authorizeProtectedActionForFiles([file], challengeReason)
|
||||
const authorizedFiles = await application.protections.authorizeProtectedActionForItems([file], challengeReason)
|
||||
return authorizedFiles.length > 0 && authorizedFiles.includes(file)
|
||||
},
|
||||
[application]
|
||||
|
||||
@@ -157,6 +157,10 @@ export class SNReactNativeCrypto implements PureCryptoInterface {
|
||||
return Sodium.from_base64(base64String)
|
||||
}
|
||||
|
||||
public base64URLEncode(text: string): string {
|
||||
return Sodium.to_base64(text, Sodium.constants.base64_variant_VARIANT_URLSAFE_NO_PADDING)
|
||||
}
|
||||
|
||||
public hmac1(): Promise<HexString | null> {
|
||||
throw new Error('hmac1 is not implemented on mobile')
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import { SectionedTableCell } from '@Root/Components/SectionedTableCell'
|
||||
import { TableSection } from '@Root/Components/TableSection'
|
||||
import { ModalStackNavigationProp } from '@Root/ModalStack'
|
||||
import { SCREEN_INPUT_MODAL_TAG } from '@Root/Screens/screens'
|
||||
import { SNTag, TagMutator } from '@standardnotes/snjs'
|
||||
import { SNNote, SNTag, TagMutator } from '@standardnotes/snjs'
|
||||
import { ThemeServiceContext } from '@Style/ThemeService'
|
||||
import React, { useCallback, useContext, useEffect, useRef, useState } from 'react'
|
||||
import { TextInput } from 'react-native'
|
||||
@@ -47,7 +47,7 @@ export const TagInputModal = (props: Props) => {
|
||||
if (props.route.params.noteUuid) {
|
||||
const note = application.items.findItem(props.route.params.noteUuid)
|
||||
if (note) {
|
||||
tagMutator.addItemAsRelationship(note)
|
||||
tagMutator.addNote(note as SNNote)
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -58,7 +58,7 @@ export const TagInputModal = (props: Props) => {
|
||||
const tagMutator = mutator as TagMutator
|
||||
const note = application.items.findItem(props.route.params.noteUuid!)
|
||||
if (note) {
|
||||
tagMutator.addItemAsRelationship(note)
|
||||
tagMutator.addNote(note as SNNote)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -161,6 +161,10 @@ export const NoteList = (props: Props) => {
|
||||
}
|
||||
|
||||
const renderItem: ListRenderItem<SNNote> | null | undefined = ({ item }) => {
|
||||
if (!item) {
|
||||
return null
|
||||
}
|
||||
|
||||
return (
|
||||
<NoteCell
|
||||
note={item}
|
||||
@@ -219,7 +223,7 @@ export const NoteList = (props: Props) => {
|
||||
<FlatList
|
||||
ref={noteListRef}
|
||||
style={styles.list}
|
||||
keyExtractor={item => item.uuid}
|
||||
keyExtractor={item => item?.uuid}
|
||||
contentContainerStyle={[{ paddingBottom: insets.bottom }, props.notes.length > 0 ? {} : { height: '100%' }]}
|
||||
initialNumToRender={6}
|
||||
windowSize={6}
|
||||
|
||||
@@ -9,7 +9,6 @@ import {
|
||||
CollectionSort,
|
||||
CollectionSortProperty,
|
||||
ContentType,
|
||||
NotesDisplayCriteria,
|
||||
SmartView,
|
||||
SNNote,
|
||||
SNTag,
|
||||
@@ -210,8 +209,8 @@ export const Notes = React.memo(
|
||||
applyFilters = searchText !== ''
|
||||
}
|
||||
|
||||
const criteria = NotesDisplayCriteria.Create({
|
||||
sortProperty: sortOptions?.sortBy ?? sortBy,
|
||||
application.items.setPrimaryItemDisplayOptions({
|
||||
sortBy: sortOptions?.sortBy ?? sortBy,
|
||||
sortDirection: sortOptions?.sortReverse ?? sortReverse ? 'asc' : 'dsc',
|
||||
tags: tag instanceof SNTag ? [tag] : [],
|
||||
views: tag instanceof SmartView ? [tag] : [],
|
||||
@@ -219,7 +218,6 @@ export const Notes = React.memo(
|
||||
includeArchived: applyFilters && (includeArchived ?? includeArchivedNotes),
|
||||
includeTrashed: applyFilters && (includeTrashed ?? includeTrashedNotes),
|
||||
})
|
||||
application.items.setNotesDisplayCriteria(criteria)
|
||||
},
|
||||
[
|
||||
application,
|
||||
|
||||
@@ -20,6 +20,10 @@ export const EncryptionSection = (props: Props) => {
|
||||
const [protocolDisplayName, setProtocolDisplayName] = useState('')
|
||||
|
||||
useEffect(() => {
|
||||
if (!props.encryptionAvailable) {
|
||||
return
|
||||
}
|
||||
|
||||
let mounted = true
|
||||
const getProtocolDisplayName = async () => {
|
||||
const displayName = (await application?.getProtocolEncryptionDisplayName()) ?? ''
|
||||
@@ -39,7 +43,7 @@ export const EncryptionSection = (props: Props) => {
|
||||
if (props.encryptionAvailable) {
|
||||
encryptionStatus += ` | ${encryptionType}`
|
||||
} else {
|
||||
encryptionStatus += '. ' // to connect sentence
|
||||
encryptionStatus += '. '
|
||||
encryptionStatus +=
|
||||
application?.getStorageEncryptionPolicy() === StorageEncryptionPolicy.Default
|
||||
? 'To enable encryption, sign in, register, or enable storage encryption.'
|
||||
|
||||
@@ -3,9 +3,9 @@ import { AppStackNavigationProp } from '@Root/AppStack'
|
||||
import { useSafeApplicationContext } from '@Root/Hooks/useSafeApplicationContext'
|
||||
import { SCREEN_COMPOSE, SCREEN_INPUT_MODAL_TAG } from '@Root/Screens/screens'
|
||||
import { SideMenuOptionIconDescriptionType } from '@Root/Screens/SideMenu/SideMenuSection'
|
||||
import { ButtonType, CollectionSort, ContentType, FindItem, SmartView, SNTag } from '@standardnotes/snjs'
|
||||
import { ButtonType, ContentType, FindItem, SmartView, SNTag } from '@standardnotes/snjs'
|
||||
import { useCustomActionSheet } from '@Style/CustomActionSheet'
|
||||
import React, { useCallback, useEffect, useRef, useState } from 'react'
|
||||
import React, { useCallback, useEffect, useState } from 'react'
|
||||
import { FlatList, ListRenderItem } from 'react-native'
|
||||
import { SideMenuCell } from './SideMenuCell'
|
||||
import { EmptyPlaceholder } from './TagSelectionList.styled'
|
||||
@@ -27,15 +27,14 @@ export const TagSelectionList = React.memo(
|
||||
|
||||
// State
|
||||
const [tags, setTags] = useState<SNTag[] | SmartView[]>(() => {
|
||||
return contentType === ContentType.SmartView ? application!.items.getSmartViews() : []
|
||||
return contentType === ContentType.SmartView ? application.items.getSmartViews() : []
|
||||
})
|
||||
const displayOptionsSet = useRef<boolean>(false)
|
||||
|
||||
const reloadTags = useCallback(() => {
|
||||
if (contentType === ContentType.SmartView) {
|
||||
setTags(application!.items.getSmartViews())
|
||||
setTags(application.items.getSmartViews())
|
||||
} else {
|
||||
setTags(application!.items.getDisplayableItems(contentType) as SNTag[])
|
||||
setTags(application.items.getDisplayableTags())
|
||||
}
|
||||
}, [application, contentType])
|
||||
|
||||
@@ -54,11 +53,6 @@ export const TagSelectionList = React.memo(
|
||||
)
|
||||
|
||||
useEffect(() => {
|
||||
if (!displayOptionsSet.current) {
|
||||
application!.items.setDisplayOptions(contentType, CollectionSort.Title, 'dsc')
|
||||
displayOptionsSet.current = true
|
||||
}
|
||||
|
||||
const removeStreamTags = streamTags()
|
||||
|
||||
return removeStreamTags
|
||||
@@ -86,7 +80,7 @@ export const TagSelectionList = React.memo(
|
||||
ButtonType.Danger
|
||||
)
|
||||
if (confirmed) {
|
||||
await application!.mutator.deleteItem(tag)
|
||||
await application.mutator.deleteItem(tag)
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user