diff --git a/app.config.js b/app.config.js index 18630cab52..58cb8c7a7e 100644 --- a/app.config.js +++ b/app.config.js @@ -43,7 +43,7 @@ module.exports = function (_config) { icon: './assets/app-icons/ios_icon_default_next.png', userInterfaceStyle: 'automatic', primaryColor: '#1083fe', - newArchEnabled: false, + newArchEnabled: true, ios: { supportsTablet: false, bundleIdentifier: 'xyz.blueskyweb.app', diff --git a/package.json b/package.json index a0240ee85f..20fbf11932 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,6 @@ "@bitdrift/react-native": "^0.6.8", "@braintree/sanitize-url": "^6.0.2", "@bsky.app/alf": "^0.1.6", - "@bsky.app/react-native-mmkv": "2.12.5", "@discord/bottom-sheet": "bluesky-social/react-native-bottom-sheet", "@emoji-mart/react": "^1.1.1", "@expo/html-elements": "^0.12.5", @@ -198,6 +197,7 @@ "react-native-gesture-handler": "~2.28.0", "react-native-get-random-values": "~1.11.0", "react-native-keyboard-controller": "1.18.5", + "react-native-mmkv": "^3.3.1", "react-native-pager-view": "6.8.0", "react-native-progress": "bluesky-social/react-native-progress", "react-native-qrcode-styled": "^0.3.3", @@ -205,7 +205,7 @@ "react-native-safe-area-context": "~5.6.0", "react-native-screens": "^4.19.0", "react-native-svg": "15.12.1", - "react-native-uitextview": "^1.4.0", + "react-native-uitextview": "2.0.4", "react-native-url-polyfill": "^1.3.0", "react-native-uuid": "^2.0.3", "react-native-view-shot": "^4.0.3", diff --git a/patches/react-native-uitextview+1.4.0.patch b/patches/react-native-uitextview+1.4.0.patch deleted file mode 100644 index 345e6b0e85..0000000000 --- a/patches/react-native-uitextview+1.4.0.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff --git a/node_modules/react-native-uitextview/ios/RNUITextViewShadow.swift b/node_modules/react-native-uitextview/ios/RNUITextViewShadow.swift -index c34ba71..13d576a 100644 ---- a/node_modules/react-native-uitextview/ios/RNUITextViewShadow.swift -+++ b/node_modules/react-native-uitextview/ios/RNUITextViewShadow.swift -@@ -159,13 +159,23 @@ class RNUITextViewShadow: RCTShadowView { - let maxSize = CGSize(width: CGFloat(maxWidth), height: CGFloat(MAXFLOAT)) - let textSize = self.attributedText.boundingRect(with: maxSize, options: .usesLineFragmentOrigin, context: nil) - -- var totalLines = self.lineHeight == 0.0 ? 0 : Int(ceil(textSize.height / self.lineHeight)) -- -- if self.numberOfLines != 0, totalLines > self.numberOfLines { -- totalLines = self.numberOfLines -+ var finalHeight: CGFloat -+ -+ if self.numberOfLines != 0 && self.lineHeight != 0.0 { -+ // numberOfLines is set with custom line height - need to calculate lines and snap to lineHeight multiples -+ // NOTE: this calculation can be inaccurate with fractional font sizes -+ var totalLines = Int(ceil(textSize.height / self.lineHeight)) -+ if totalLines > self.numberOfLines { -+ totalLines = self.numberOfLines -+ } -+ finalHeight = CGFloat(totalLines) * self.lineHeight -+ } else { -+ // Either no numberOfLines limit, or no custom lineHeight - use actual text height -+ // (numberOfLines without custom lineHeight is handled by the UITextView's textContainer.maximumNumberOfLines) -+ finalHeight = textSize.height - } - -- self.frameSize = CGSize(width: CGFloat(maxWidth), height: CGFloat(CGFloat(totalLines) * self.lineHeight)) -+ self.frameSize = CGSize(width: CGFloat(maxWidth), height: finalHeight) - return YGSize(width: Float(self.frameSize.width), height: Float(self.frameSize.height)) - } - diff --git a/src/storage/__tests__/index.test.ts b/src/storage/__tests__/index.test.ts index 0b57d365ff..e11affa7a8 100644 --- a/src/storage/__tests__/index.test.ts +++ b/src/storage/__tests__/index.test.ts @@ -2,7 +2,7 @@ import {beforeEach, expect, jest, test} from '@jest/globals' import {Storage} from '#/storage' -jest.mock('@bsky.app/react-native-mmkv', () => ({ +jest.mock('react-native-mmkv', () => ({ MMKV: class MMKVMock { _store = new Map() diff --git a/src/storage/index.ts b/src/storage/index.ts index 3ae4577295..4c42005104 100644 --- a/src/storage/index.ts +++ b/src/storage/index.ts @@ -1,5 +1,5 @@ import {useCallback, useEffect, useState} from 'react' -import {MMKV} from '@bsky.app/react-native-mmkv' +import {MMKV} from 'react-native-mmkv' import {type Account, type Device} from '#/storage/schema' diff --git a/yarn.lock b/yarn.lock index 69b33ae337..92c621db66 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3615,11 +3615,6 @@ dependencies: react-responsive "^10.0.1" -"@bsky.app/react-native-mmkv@2.12.5": - version "2.12.5" - resolved "https://registry.yarnpkg.com/@bsky.app/react-native-mmkv/-/react-native-mmkv-2.12.5.tgz#eb17d31a6158c74393f617a1763ac223ff3f83a6" - integrity sha512-3vUz1nQY1DiKIPAWRkpp5ZGxH5f2G6Ui0UuQuEYjYv81xx1qFcSzS9KQ2sHcOKYdkOM9amWV2Q8TQCxt1lrAHg== - "@bufbuild/protobuf@^1.5.0": version "1.7.0" resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-1.7.0.tgz#cecddc8162a231642b410bc7b99309cd5969733c" @@ -16749,6 +16744,11 @@ react-native-keyboard-controller@1.18.5: dependencies: react-native-is-edge-to-edge "^1.2.1" +react-native-mmkv@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/react-native-mmkv/-/react-native-mmkv-3.3.1.tgz#854ec786d3951e4bbbaa6161d812c3345d071d85" + integrity sha512-LYamDWQirPTUJZ9Re+BkCD+zLRGNr+EVJDeIeblvoJXGatWy9PXnChtajDSLqwjX3EXVeUyjgrembs7wlBw9ug== + react-native-pager-view@6.8.0: version "6.8.0" resolved "https://registry.yarnpkg.com/react-native-pager-view/-/react-native-pager-view-6.8.0.tgz#5bac05203d911bf9bf039d47db41b1313dbd1a7a" @@ -16808,10 +16808,10 @@ react-native-svg@15.12.1: css-tree "^1.1.3" warn-once "0.1.1" -react-native-uitextview@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/react-native-uitextview/-/react-native-uitextview-1.4.0.tgz#d1b583cc173cec00f4fdd03744cca76c54a12fbb" - integrity sha512-itm/frzkn/ma3+lwmKn2CkBOXPNo4bL8iVwQwjlzix5gVO59T2+axdfoj/Wi+Ra6F76KzNKxSah+7Y8dYmCHbQ== +react-native-uitextview@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/react-native-uitextview/-/react-native-uitextview-2.0.4.tgz#2247acb35a4a1f8b8135c8ea8783d50c9d384635" + integrity sha512-bTkL95iBMd3pbI8km2nCj/ym2FS050Ww6C1RkGNx+4oCm4G4nM9NSVNxDy47dGYf0ySxC2J/T0/ldob6Xp5YJQ== react-native-url-polyfill@^1.3.0: version "1.3.0"