Compare commits
19
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e6d9e7fc27 | ||
|
|
e5ef15b531 | ||
|
|
e41fb03b6f | ||
|
|
0ae1e9bc5a | ||
|
|
ddd0796381 | ||
|
|
92cc49184d | ||
|
|
41282a9f5d | ||
|
|
5bb954f8a7 | ||
|
|
6a169bd0bd | ||
|
|
a15c9788fe | ||
|
|
6279264ff1 | ||
|
|
cb9ae21cf2 | ||
|
|
6eb53ca2db | ||
|
|
5d6800cee0 | ||
|
|
d5af6b62a7 | ||
|
|
f2366219a3 | ||
|
|
95e0715163 | ||
|
|
9479f02b39 | ||
|
|
9df1b854bd |
@@ -196,10 +196,6 @@ status-im.desktop.core/init
|
||||
status-im.chat.models-test/test-db
|
||||
quo.design-system.spacing/padding-vertical
|
||||
status-im.utils.money/percent-change
|
||||
status-im.utils.platform/isMacOs?
|
||||
status-im.utils.platform/isNix?
|
||||
status-im.utils.platform/isWin?
|
||||
status-im.utils.platform/android-version>=
|
||||
utils.debounce/clear-all
|
||||
status-im.transport.db/create-chat
|
||||
status-im.utils.priority-map/priority-map
|
||||
|
||||
@@ -62,6 +62,10 @@ abstract_target 'Status' do
|
||||
installer.pods_project.targets.each do |target|
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
|
||||
# fix for no template named 'unary_function' in namespace 'std'; did you mean '__unary_function'?
|
||||
# ref : https://github.com/facebook/react-native/issues/37748
|
||||
# TODO : remove after upgrading to react-native 0.72.x
|
||||
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', '_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION']
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
+2
-2
@@ -772,7 +772,7 @@ SPEC CHECKSUMS:
|
||||
RNLanguages: 962e562af0d34ab1958d89bcfdb64fafc37c513e
|
||||
RNPermissions: ad71dd4f767ec254f2cd57592fbee02afee75467
|
||||
RNReactNativeHapticFeedback: 2566b468cc8d0e7bb2f84b23adc0f4614594d071
|
||||
RNReanimated: d0db0ee059c33381bca787a2193c27e52750ccaf
|
||||
RNReanimated: 43adb0307a62c1ce9694f36f124ca3b51a15272a
|
||||
RNShare: d82e10f6b7677f4b0048c23709bd04098d5aee6c
|
||||
RNStaticSafeAreaInsets: 055ddbf5e476321720457cdaeec0ff2ba40ec1b8
|
||||
RNSVG: 80584470ff1ffc7994923ea135a3e5ad825546b9
|
||||
@@ -785,6 +785,6 @@ SPEC CHECKSUMS:
|
||||
TouchID: ba4c656d849cceabc2e4eef722dea5e55959ecf4
|
||||
Yoga: d24d6184b6b85f742536bd93bd07d69d7b9bb4c1
|
||||
|
||||
PODFILE CHECKSUM: 1b60eee24bff3a6287f8b33e57657289b2966342
|
||||
PODFILE CHECKSUM: ac30a0172ff0126b6f307c20f34c47ce0ebf278f
|
||||
|
||||
COCOAPODS: 1.12.0
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
00E356F31AD99517003FC87E /* StatusImTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* StatusImTests.m */; };
|
||||
04515E9DF839CBF55C690E79 /* libPods-Status-StatusImPR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5006FF03675A7E50320B4002 /* libPods-Status-StatusImPR.a */; };
|
||||
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
|
||||
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||
25DC9C9DC25846BD8D084888 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */; };
|
||||
@@ -43,12 +44,11 @@
|
||||
715D8132290BE850006F5C88 /* UbuntuMono-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 715D8131290BE850006F5C88 /* UbuntuMono-Regular.ttf */; };
|
||||
715D8133290BE850006F5C88 /* UbuntuMono-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 715D8131290BE850006F5C88 /* UbuntuMono-Regular.ttf */; };
|
||||
74B758FC20D7C00B003343C3 /* launch-image-universal.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 74B758FB20D7C00B003343C3 /* launch-image-universal.storyboard */; };
|
||||
81F3191BB1D4BDF3442402BD /* libPods-Status-StatusIm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F8E9088BDE117AB71366407 /* libPods-Status-StatusIm.a */; };
|
||||
8391E8E0E93C41A98AAA6631 /* Inter-SemiBoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = A4F2BBE8D4DD4140A6CCAC39 /* Inter-SemiBoldItalic.otf */; };
|
||||
B0E570AEBE2BEB426BF60259 /* libPods-Status-StatusImPR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D059F2E62D7CD9FB1896703 /* libPods-Status-StatusImPR.a */; };
|
||||
B24FC7FD1DE7195700D694FF /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7FC1DE7195700D694FF /* Social.framework */; };
|
||||
B24FC7FF1DE7195F00D694FF /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7FE1DE7195F00D694FF /* MessageUI.framework */; };
|
||||
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */; };
|
||||
B73930D752A70EAB45001773 /* libPods-Status-StatusIm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FBEDE2F94002488EF6B277DA /* libPods-Status-StatusIm.a */; };
|
||||
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E586E1B0E544F64AA9F5BD1 /* libz.tbd */; };
|
||||
C14C5F8D29C0A149005C58A7 /* launch-icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = C14C5F8C29C0A149005C58A7 /* launch-icon@3x.png */; };
|
||||
C14C5F9129C0AD9C005C58A7 /* launch-icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C14C5F9029C0AD9C005C58A7 /* launch-icon@2x.png */; };
|
||||
@@ -57,10 +57,10 @@
|
||||
C1715FFB29C0BCE50088FA8B /* launch-icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = C14C5F8C29C0A149005C58A7 /* launch-icon@3x.png */; };
|
||||
C1715FFC29C0BCE80088FA8B /* launch-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = C14C5F9229C0ADB5005C58A7 /* launch-icon.png */; };
|
||||
CE4E31B31D8695250033ED64 /* Statusgo.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE4E31B21D8695250033ED64 /* Statusgo.xcframework */; };
|
||||
D156FF2CCF43C136F7BF8AE5 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3EFEEB5FC1235562D5D3BF1 /* libPods-Status-StatusIm-StatusImTests.a */; };
|
||||
D1786306E0184916B11F4C37 /* Inter-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = B2A38FC3D3954DE7B2B171F8 /* Inter-Medium.otf */; };
|
||||
D84616FB563A48EBB1678699 /* Inter-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = CD4A2C27D6D5473184DC1F7E /* Inter-Bold.otf */; };
|
||||
D99C50E5E18942A39C8DDF61 /* Inter-BoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = B321D25F4493470980039457 /* Inter-BoldItalic.otf */; };
|
||||
F5EC958C8908294B8536B835 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 06FA6B17CC0A7FAFA9DA5364 /* libPods-Status-StatusIm-StatusImTests.a */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
@@ -108,24 +108,23 @@
|
||||
00E356EE1AD99517003FC87E /* StatusImTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = StatusImTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
00E356F21AD99517003FC87E /* StatusImTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StatusImTests.m; sourceTree = "<group>"; };
|
||||
06FA6B17CC0A7FAFA9DA5364 /* libPods-Status-StatusIm-StatusImTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm-StatusImTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
08A713A336BFEE0924821EC9 /* Pods-Status-StatusIm.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.release.xcconfig"; sourceTree = "<group>"; };
|
||||
103861DFF36B6063BED2602B /* Pods-Status-StatusImPR.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.release.xcconfig"; sourceTree = "<group>"; };
|
||||
06AF19FA626AFFC91E66916B /* Pods-Status-StatusImPR.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.release.xcconfig"; sourceTree = "<group>"; };
|
||||
0F8E9088BDE117AB71366407 /* libPods-Status-StatusIm.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
13B07F961A680F5B00A75B9A /* StatusIm.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = StatusIm.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = StatusIm/AppDelegate.h; sourceTree = "<group>"; };
|
||||
13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = StatusIm/AppDelegate.mm; sourceTree = "<group>"; };
|
||||
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = StatusIm/Info.plist; sourceTree = "<group>"; };
|
||||
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = StatusIm/main.m; sourceTree = "<group>"; };
|
||||
1426DF592BA248FC81D955CB /* Inter-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Regular.otf"; path = "../resources/fonts/Inter-Regular.otf"; sourceTree = "<group>"; };
|
||||
1CDF317A2E103217DF386083 /* Pods-Status-StatusIm.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.release.xcconfig"; sourceTree = "<group>"; };
|
||||
3A2626CE245C3F2200D5F94B /* Dummy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dummy.swift; sourceTree = "<group>"; };
|
||||
3A6406FB24A3ADF90046ED37 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
3A8F8EA924A4D31600BF206D /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
|
||||
3AAD2ADC24A3A60E0075D594 /* Status PR.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Status PR.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
3AB1C3AD245C043900098F67 /* StatusIm-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "StatusIm-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
4C16DE0B1F89508700AA10DB /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||
4D059F2E62D7CD9FB1896703 /* libPods-Status-StatusImPR.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusImPR.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4D7FC122A838AC3BFC46D82B /* Pods-Status-StatusImPR.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
4E586E1B0E544F64AA9F5BD1 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
|
||||
5006FF03675A7E50320B4002 /* libPods-Status-StatusImPR.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusImPR.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
65F693BD2578002500A45E76 /* CoreNFC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreNFC.framework; path = System/Library/Frameworks/CoreNFC.framework; sourceTree = SDKROOT; };
|
||||
65F693BF2578003600A45E76 /* CoreNFC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreNFC.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/iOSSupport/System/Library/Frameworks/CoreNFC.framework; sourceTree = DEVELOPER_DIR; };
|
||||
65F6941725780A4E00A45E76 /* StatusImTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "StatusImTests-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
@@ -133,13 +132,13 @@
|
||||
693A62DB37BC4CD5A30E5C96 /* Inter-SemiBold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-SemiBold.otf"; path = "../resources/fonts/Inter-SemiBold.otf"; sourceTree = "<group>"; };
|
||||
715D8131290BE850006F5C88 /* UbuntuMono-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "UbuntuMono-Regular.ttf"; path = "../resources/fonts/UbuntuMono-Regular.ttf"; sourceTree = "<group>"; };
|
||||
74B758FB20D7C00B003343C3 /* launch-image-universal.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "launch-image-universal.storyboard"; sourceTree = "<group>"; };
|
||||
84C3C20891247EC6BFF93B51 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
886398AFEF2B823AC8A4912C /* Pods-Status-StatusIm.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
|
||||
922C4CA61F4D5F8B0033C753 /* StatusIm.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = StatusIm.entitlements; path = StatusIm/StatusIm.entitlements; sourceTree = "<group>"; };
|
||||
93347A9564A62A24509EFA9C /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
9C76AF5A418D4D65A4CAD1D9 /* InterStatus-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "InterStatus-Regular.otf"; path = "../resources/fonts/InterStatus-Regular.otf"; sourceTree = "<group>"; };
|
||||
9EC0135C1E06FB1900155B5C /* RCTWKWebView.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWKWebView.xcodeproj; path = "../node_modules/react-native-wkwebview-reborn/ios/RCTWKWebView.xcodeproj"; sourceTree = "<group>"; };
|
||||
A4F2BBE8D4DD4140A6CCAC39 /* Inter-SemiBoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-SemiBoldItalic.otf"; path = "../resources/fonts/Inter-SemiBoldItalic.otf"; sourceTree = "<group>"; };
|
||||
AA6DC18226EB1EFB2A8FE64D /* Pods-Status-StatusIm.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
B07176ACDAA1422E8F0A3D6B /* Inter-Italic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Italic.otf"; path = "../resources/fonts/Inter-Italic.otf"; sourceTree = "<group>"; };
|
||||
B24FC7FC1DE7195700D694FF /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; };
|
||||
B24FC7FE1DE7195F00D694FF /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; };
|
||||
@@ -149,11 +148,12 @@
|
||||
C14C5F8C29C0A149005C58A7 /* launch-icon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "launch-icon@3x.png"; path = "StatusIm/launch-icon@3x.png"; sourceTree = "<group>"; };
|
||||
C14C5F9029C0AD9C005C58A7 /* launch-icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "launch-icon@2x.png"; path = "StatusIm/launch-icon@2x.png"; sourceTree = "<group>"; };
|
||||
C14C5F9229C0ADB5005C58A7 /* launch-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "launch-icon.png"; path = "StatusIm/launch-icon.png"; sourceTree = "<group>"; };
|
||||
C618F2C2EF820C722B1E7624 /* Pods-Status-StatusImPR.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
C6B1215047604CD59A4C74D6 /* Inter-MediumItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-MediumItalic.otf"; path = "../resources/fonts/Inter-MediumItalic.otf"; sourceTree = "<group>"; };
|
||||
CD4A2C27D6D5473184DC1F7E /* Inter-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Bold.otf"; path = "../resources/fonts/Inter-Bold.otf"; sourceTree = "<group>"; };
|
||||
CE4E31B21D8695250033ED64 /* Statusgo.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Statusgo.xcframework; path = "../modules/react-native-status/ios/RCTStatus/Statusgo.xcframework"; sourceTree = "<group>"; };
|
||||
EBFEABB7D6CC1144D83FBA82 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
FBEDE2F94002488EF6B277DA /* libPods-Status-StatusIm.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D3EFEEB5FC1235562D5D3BF1 /* libPods-Status-StatusIm-StatusImTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm-StatusImTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
DAE7378308FEB005CE0A6E42 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -161,7 +161,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
F5EC958C8908294B8536B835 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */,
|
||||
D156FF2CCF43C136F7BF8AE5 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -174,7 +174,7 @@
|
||||
CE4E31B31D8695250033ED64 /* Statusgo.xcframework in Frameworks */,
|
||||
25DC9C9DC25846BD8D084888 /* libc++.tbd in Frameworks */,
|
||||
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */,
|
||||
B73930D752A70EAB45001773 /* libPods-Status-StatusIm.a in Frameworks */,
|
||||
81F3191BB1D4BDF3442402BD /* libPods-Status-StatusIm.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -188,7 +188,7 @@
|
||||
3AAD2AC224A3A60E0075D594 /* Statusgo.xcframework in Frameworks */,
|
||||
3AAD2AC524A3A60E0075D594 /* libc++.tbd in Frameworks */,
|
||||
3AAD2AC624A3A60E0075D594 /* libz.tbd in Frameworks */,
|
||||
B0E570AEBE2BEB426BF60259 /* libPods-Status-StatusImPR.a in Frameworks */,
|
||||
04515E9DF839CBF55C690E79 /* libPods-Status-StatusImPR.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -314,9 +314,9 @@
|
||||
CE4E31B21D8695250033ED64 /* Statusgo.xcframework */,
|
||||
8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */,
|
||||
4E586E1B0E544F64AA9F5BD1 /* libz.tbd */,
|
||||
FBEDE2F94002488EF6B277DA /* libPods-Status-StatusIm.a */,
|
||||
06FA6B17CC0A7FAFA9DA5364 /* libPods-Status-StatusIm-StatusImTests.a */,
|
||||
4D059F2E62D7CD9FB1896703 /* libPods-Status-StatusImPR.a */,
|
||||
0F8E9088BDE117AB71366407 /* libPods-Status-StatusIm.a */,
|
||||
D3EFEEB5FC1235562D5D3BF1 /* libPods-Status-StatusIm-StatusImTests.a */,
|
||||
5006FF03675A7E50320B4002 /* libPods-Status-StatusImPR.a */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
@@ -324,12 +324,12 @@
|
||||
D0D5C8D06825D33BA2D2121E /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
886398AFEF2B823AC8A4912C /* Pods-Status-StatusIm.debug.xcconfig */,
|
||||
08A713A336BFEE0924821EC9 /* Pods-Status-StatusIm.release.xcconfig */,
|
||||
EBFEABB7D6CC1144D83FBA82 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */,
|
||||
84C3C20891247EC6BFF93B51 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */,
|
||||
4D7FC122A838AC3BFC46D82B /* Pods-Status-StatusImPR.debug.xcconfig */,
|
||||
103861DFF36B6063BED2602B /* Pods-Status-StatusImPR.release.xcconfig */,
|
||||
AA6DC18226EB1EFB2A8FE64D /* Pods-Status-StatusIm.debug.xcconfig */,
|
||||
1CDF317A2E103217DF386083 /* Pods-Status-StatusIm.release.xcconfig */,
|
||||
DAE7378308FEB005CE0A6E42 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */,
|
||||
93347A9564A62A24509EFA9C /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */,
|
||||
C618F2C2EF820C722B1E7624 /* Pods-Status-StatusImPR.debug.xcconfig */,
|
||||
06AF19FA626AFFC91E66916B /* Pods-Status-StatusImPR.release.xcconfig */,
|
||||
);
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
@@ -341,11 +341,11 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "StatusImTests" */;
|
||||
buildPhases = (
|
||||
F083BDB009D93F14ABE9577A /* [CP] Check Pods Manifest.lock */,
|
||||
A461E3110C485D2A21EB942C /* [CP] Check Pods Manifest.lock */,
|
||||
00E356EA1AD99517003FC87E /* Sources */,
|
||||
00E356EB1AD99517003FC87E /* Frameworks */,
|
||||
00E356EC1AD99517003FC87E /* Resources */,
|
||||
D2C750D3F094DB4514432955 /* [CP] Copy Pods Resources */,
|
||||
2B2389E62F0A9702C522FD40 /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -361,14 +361,14 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "StatusIm" */;
|
||||
buildPhases = (
|
||||
29DFA8D4A1684BDC5257F30D /* [CP] Check Pods Manifest.lock */,
|
||||
C5DA0344FCE555AD1908FBCD /* [CP] Check Pods Manifest.lock */,
|
||||
13B07F871A680F5B00A75B9A /* Sources */,
|
||||
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
||||
13B07F8E1A680F5B00A75B9A /* Resources */,
|
||||
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
||||
20B6B6891D92C42700CC5C6A /* Embed Frameworks */,
|
||||
E3914A731DF919ED00EBB515 /* Run Script */,
|
||||
81ABD64BC3E76C9EEE7A6C62 /* [CP] Copy Pods Resources */,
|
||||
EC618D80223E4CE064CFF898 /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -383,14 +383,14 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 3AAD2AD924A3A60E0075D594 /* Build configuration list for PBXNativeTarget "StatusImPR" */;
|
||||
buildPhases = (
|
||||
B75C010670287761677282A4 /* [CP] Check Pods Manifest.lock */,
|
||||
0196982A5A6EB89DC2106F9B /* [CP] Check Pods Manifest.lock */,
|
||||
3AAD2ABB24A3A60E0075D594 /* Sources */,
|
||||
3AAD2ABF24A3A60E0075D594 /* Frameworks */,
|
||||
3AAD2AC924A3A60E0075D594 /* Resources */,
|
||||
3AAD2AD524A3A60E0075D594 /* Bundle React Native code and images */,
|
||||
3AAD2AD624A3A60E0075D594 /* Embed Frameworks */,
|
||||
3AAD2AD724A3A60E0075D594 /* Run Script */,
|
||||
C7E5420D406F9FB4ACC8ECE8 /* [CP] Copy Pods Resources */,
|
||||
4DBAAF9A3117797361E216BA /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -544,7 +544,7 @@
|
||||
shellPath = "/usr/bin/env sh";
|
||||
shellScript = "set -o errexit\nexport NODE_BINARY=\"${NODE_BINARY:-node}\"\nexport NODE_ARGS=\"${NODE_ARGS:- --max-old-space-size=16384 }\"\n\nbash -x ../node_modules/react-native/scripts/react-native-xcode.sh > ./logs/react-native-xcode.log 2>&1";
|
||||
};
|
||||
29DFA8D4A1684BDC5257F30D /* [CP] Check Pods Manifest.lock */ = {
|
||||
0196982A5A6EB89DC2106F9B /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@@ -559,13 +559,35 @@
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-Status-StatusIm-checkManifestLockResult.txt",
|
||||
"$(DERIVED_FILE_DIR)/Pods-Status-StatusImPR-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
2B2389E62F0A9702C522FD40 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
3AAD2AD524A3A60E0075D594 /* Bundle React Native code and images */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -594,51 +616,7 @@
|
||||
shellPath = "/usr/bin/env sh";
|
||||
shellScript = "\"${PROJECT_DIR}/scripts/set_xcode_version.sh\" > ./logs/set_xcode_version.log 2>&1";
|
||||
};
|
||||
81ABD64BC3E76C9EEE7A6C62 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
B75C010670287761677282A4 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-Status-StatusImPR-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
C7E5420D406F9FB4ACC8ECE8 /* [CP] Copy Pods Resources */ = {
|
||||
4DBAAF9A3117797361E216BA /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@@ -660,43 +638,7 @@
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
D2C750D3F094DB4514432955 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
E3914A731DF919ED00EBB515 /* Run Script */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 8;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Run Script";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
shellPath = "/usr/bin/env sh";
|
||||
shellScript = "\"${PROJECT_DIR}/scripts/set_xcode_version.sh\" > ./logs/set_xcode_version.log 2>&1";
|
||||
};
|
||||
F083BDB009D93F14ABE9577A /* [CP] Check Pods Manifest.lock */ = {
|
||||
A461E3110C485D2A21EB942C /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@@ -718,6 +660,64 @@
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
C5DA0344FCE555AD1908FBCD /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-Status-StatusIm-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
E3914A731DF919ED00EBB515 /* Run Script */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 8;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Run Script";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
shellPath = "/usr/bin/env sh";
|
||||
shellScript = "\"${PROJECT_DIR}/scripts/set_xcode_version.sh\" > ./logs/set_xcode_version.log 2>&1";
|
||||
};
|
||||
EC618D80223E4CE064CFF898 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
@@ -765,7 +765,7 @@
|
||||
/* Begin XCBuildConfiguration section */
|
||||
00E356F61AD99517003FC87E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = EBFEABB7D6CC1144D83FBA82 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */;
|
||||
baseConfigurationReference = DAE7378308FEB005CE0A6E42 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
BUNDLE_ID_SUFFIX = .debug;
|
||||
@@ -802,7 +802,7 @@
|
||||
};
|
||||
00E356F71AD99517003FC87E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 84C3C20891247EC6BFF93B51 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */;
|
||||
baseConfigurationReference = 93347A9564A62A24509EFA9C /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
BUNDLE_ID_SUFFIX = "";
|
||||
@@ -835,7 +835,7 @@
|
||||
};
|
||||
13B07F941A680F5B00A75B9A /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 886398AFEF2B823AC8A4912C /* Pods-Status-StatusIm.debug.xcconfig */;
|
||||
baseConfigurationReference = AA6DC18226EB1EFB2A8FE64D /* Pods-Status-StatusIm.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
|
||||
BUNDLE_ID_SUFFIX = .debug;
|
||||
@@ -915,7 +915,7 @@
|
||||
};
|
||||
13B07F951A680F5B00A75B9A /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 08A713A336BFEE0924821EC9 /* Pods-Status-StatusIm.release.xcconfig */;
|
||||
baseConfigurationReference = 1CDF317A2E103217DF386083 /* Pods-Status-StatusIm.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
|
||||
BUNDLE_ID_SUFFIX = "";
|
||||
@@ -988,7 +988,7 @@
|
||||
};
|
||||
3AAD2ADA24A3A60E0075D594 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 4D7FC122A838AC3BFC46D82B /* Pods-Status-StatusImPR.debug.xcconfig */;
|
||||
baseConfigurationReference = C618F2C2EF820C722B1E7624 /* Pods-Status-StatusImPR.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
|
||||
BUNDLE_ID_SUFFIX = .debug;
|
||||
@@ -1065,7 +1065,7 @@
|
||||
};
|
||||
3AAD2ADB24A3A60E0075D594 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 103861DFF36B6063BED2602B /* Pods-Status-StatusImPR.release.xcconfig */;
|
||||
baseConfigurationReference = 06AF19FA626AFFC91E66916B /* Pods-Status-StatusImPR.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIconPR$(BUNDLE_ID_SUFFIX)";
|
||||
BUNDLE_ID_SUFFIX = "";
|
||||
|
||||
@@ -46,7 +46,6 @@
|
||||
"react-native-dialogs": "^1.0.4",
|
||||
"react-native-draggable-flatlist": "^4.0.1",
|
||||
"react-native-fast-image": "^8.5.11",
|
||||
"react-native-fetch-polyfill": "^1.1.2",
|
||||
"react-native-fs": "^2.14.1",
|
||||
"react-native-gesture-handler": "2.6.1",
|
||||
"react-native-gifted-charts": "git+https://github.com/status-im/react-native-gifted-charts.git#refs/tags/1.3.2-status.1",
|
||||
|
||||
@@ -121,7 +121,14 @@ export function screenGestureOnEnd(data) {
|
||||
return function (event) {
|
||||
'worklet';
|
||||
|
||||
const { screenLeft, screenState, screenWidth, leftVelocity, rightVelocity, screenClosedCallback } = data;
|
||||
const {
|
||||
'screen-left': screenLeft,
|
||||
'screen-state': screenState,
|
||||
'screen-width': screenWidth,
|
||||
'left-velocity': leftVelocity,
|
||||
'right-velocity': rightVelocity,
|
||||
'screen-closed-callback': screenClosedCallback,
|
||||
} = data;
|
||||
const absoluteX = event.absoluteX ?? 0;
|
||||
const velocityX = event.velocityX ?? 0;
|
||||
const closeScreen = velocityX > rightVelocity || (velocityX > leftVelocity && absoluteX >= screenWidth / 2);
|
||||
|
||||
@@ -12,18 +12,19 @@
|
||||
:height view-height})
|
||||
|
||||
(defn button-container
|
||||
[position]
|
||||
[{:keys [left right theme]}]
|
||||
(merge
|
||||
{:width 32
|
||||
:height 32
|
||||
:border-radius 10
|
||||
:justify-content :center
|
||||
:align-items :center
|
||||
:background-color (colors/theme-colors colors/white-opa-40 colors/neutral-80-opa-40)
|
||||
:background-color (colors/theme-colors colors/white-opa-40 colors/neutral-80-opa-40 theme)
|
||||
:position :absolute
|
||||
:top 56
|
||||
:z-index 3}
|
||||
position))
|
||||
:z-index 3
|
||||
:left left
|
||||
:right right}))
|
||||
|
||||
(defn blur-view
|
||||
[animation]
|
||||
@@ -38,7 +39,7 @@
|
||||
:overflow :hidden}))
|
||||
|
||||
(defn entity-picture
|
||||
[animation]
|
||||
[animation theme]
|
||||
(reanimated/apply-animations-to-style
|
||||
{:width animation
|
||||
:height animation}
|
||||
@@ -49,11 +50,11 @@
|
||||
:left 20
|
||||
:justify-content :center
|
||||
:align-items :center
|
||||
:background-color (colors/theme-colors colors/white colors/neutral-100)
|
||||
:background-color (colors/theme-colors colors/white colors/neutral-100 theme)
|
||||
:overflow :hidden}))
|
||||
|
||||
(defn header-bottom-part
|
||||
[animation]
|
||||
[animation theme]
|
||||
(reanimated/apply-animations-to-style
|
||||
{:border-top-right-radius animation
|
||||
:border-top-left-radius animation}
|
||||
@@ -62,7 +63,7 @@
|
||||
:height 86
|
||||
:left 0
|
||||
:right 0
|
||||
:background-color (colors/theme-colors colors/white colors/neutral-100)}))
|
||||
:background-color (colors/theme-colors colors/white colors/neutral-100 theme)}))
|
||||
|
||||
(defn header-comp
|
||||
[y-animation opacity-animation]
|
||||
|
||||
@@ -9,7 +9,8 @@
|
||||
[reagent.core :as reagent]
|
||||
[quo2.foundations.colors :as colors]
|
||||
[quo2.components.animated-header-flatlist.style :as style]
|
||||
[oops.core :as oops]))
|
||||
[oops.core :as oops]
|
||||
[quo2.theme :as quo.theme]))
|
||||
|
||||
(def header-height 234)
|
||||
(def cover-height 192)
|
||||
@@ -30,7 +31,7 @@
|
||||
(reanimated/set-shared-value scroll-y current-y)))
|
||||
|
||||
(defn header
|
||||
[{:keys [theme-color f-display-picture-comp cover-uri title-comp]} top-inset scroll-y]
|
||||
[{:keys [theme-color f-display-picture-comp cover-uri title-comp theme]} top-inset scroll-y]
|
||||
(let [input-range [0 (* threshold 0.33)]
|
||||
picture-scale-down 0.4
|
||||
size-animation (interpolate scroll-y input-range [80 (* 80 picture-scale-down)])
|
||||
@@ -38,21 +39,23 @@
|
||||
border-animation (interpolate scroll-y input-range [12 0])]
|
||||
[rn/view
|
||||
{:style {:height header-height
|
||||
:background-color (or theme-color (colors/theme-colors colors/white colors/neutral-95))
|
||||
:background-color (or theme-color
|
||||
(colors/theme-colors colors/white colors/neutral-95 theme))
|
||||
:margin-top (when platform/ios? (- top-inset))}}
|
||||
(when cover-uri
|
||||
[fast-image/fast-image
|
||||
{:style {:width "100%"
|
||||
:height cover-height}
|
||||
:source {:uri cover-uri}}])
|
||||
[reanimated/view {:style (style/header-bottom-part border-animation)}
|
||||
[reanimated/view {:style (style/header-bottom-part border-animation theme)}
|
||||
[title-comp]]
|
||||
[reanimated/view {:style (style/entity-picture size-animation)}
|
||||
[reanimated/view {:style (style/entity-picture size-animation theme)}
|
||||
[:f> f-display-picture-comp image-animation]]]))
|
||||
|
||||
(defn- f-animated-header-list
|
||||
[{:keys [header-comp main-comp back-button-on-press] :as params}]
|
||||
(let [window-height (:height (rn/get-window))
|
||||
(let [theme (quo.theme/use-theme-value)
|
||||
window-height (:height (rn/get-window))
|
||||
{:keys [top bottom]} (safe-area/get-insets)
|
||||
;; view height calculation is different because window height is different on iOS and Android:
|
||||
view-height (if platform/ios?
|
||||
@@ -69,12 +72,12 @@
|
||||
[rn/touchable-opacity
|
||||
{:active-opacity 1
|
||||
:on-press back-button-on-press
|
||||
:style (style/button-container {:left 20})}
|
||||
[quo/icon :i/arrow-left {:size 20 :color (colors/theme-colors colors/black colors/white)}]]
|
||||
:style (style/button-container {:left 20 :theme theme})}
|
||||
[quo/icon :i/arrow-left {:size 20 :color (colors/theme-colors colors/black colors/white theme)}]]
|
||||
[rn/touchable-opacity
|
||||
{:active-opacity 1
|
||||
:style (style/button-container {:right 20})}
|
||||
[quo/icon :i/options {:size 20 :color (colors/theme-colors colors/black colors/white)}]]
|
||||
:style (style/button-container {:right 20 :theme theme})}
|
||||
[quo/icon :i/options {:size 20 :color (colors/theme-colors colors/black colors/white theme)}]]
|
||||
[reanimated/blur-view
|
||||
{:blurAmount 32
|
||||
:blurType :light
|
||||
@@ -86,7 +89,7 @@
|
||||
{:data [nil]
|
||||
:render-fn main-comp
|
||||
:key-fn str
|
||||
:header (reagent/as-element (header params top scroll-y))
|
||||
:header (reagent/as-element (header (assoc params :theme theme) top scroll-y))
|
||||
;; TODO: https://github.com/status-im/status-mobile/issues/14924
|
||||
:scroll-event-throttle 8
|
||||
:on-scroll (fn [event] (scroll-handler event initial-y scroll-y))}]]))
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
(:require [quo2.foundations.colors :as colors]))
|
||||
|
||||
(defn divider-line
|
||||
[blur? theme]
|
||||
{:border-color (if blur?
|
||||
(colors/theme-colors colors/neutral-80-opa-5 colors/white-opa-5 theme)
|
||||
(colors/theme-colors colors/neutral-10 colors/neutral-90 theme))
|
||||
:padding-top 12
|
||||
:padding-bottom 8
|
||||
:border-bottom-width 1})
|
||||
[{:keys [blur? container-style theme]}]
|
||||
(merge
|
||||
{:border-color (if blur?
|
||||
(colors/theme-colors colors/neutral-80-opa-5 colors/white-opa-5 theme)
|
||||
(colors/theme-colors colors/neutral-10 colors/neutral-90 theme))
|
||||
:border-bottom-width 1}
|
||||
container-style))
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
[quo2.components.dividers.divider-line.style :as style]))
|
||||
|
||||
(defn- view-internal
|
||||
[{:keys [blur? theme]}]
|
||||
[rn/view {:style (style/divider-line blur? theme)}])
|
||||
[props]
|
||||
[rn/view {:style (style/divider-line props)}])
|
||||
|
||||
(def view (quo.theme/with-theme view-internal))
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
[quo2.components.buttons.button.view :as button]
|
||||
[quo2.components.markdown.text :as text]
|
||||
[quo2.foundations.colors :as colors]
|
||||
[quo2.theme :as quo.theme]
|
||||
[react-native.core :as rn]
|
||||
[react-native.reanimated :as reanimated]
|
||||
[reagent.core :as reagent]))
|
||||
@@ -10,11 +11,12 @@
|
||||
(def header-height 56)
|
||||
|
||||
(defn header-wrapper-style
|
||||
[{:keys [height border-bottom background]}]
|
||||
[{:keys [height border-bottom background theme]}]
|
||||
(merge
|
||||
{:background-color (colors/theme-colors
|
||||
colors/neutral-5
|
||||
colors/neutral-95)
|
||||
colors/neutral-95
|
||||
theme)
|
||||
:height height}
|
||||
(when background
|
||||
{:background-color background})
|
||||
@@ -22,7 +24,8 @@
|
||||
{:border-bottom-width 1
|
||||
:border-bottom-color (colors/theme-colors
|
||||
colors/neutral-5
|
||||
colors/neutral-95)})))
|
||||
colors/neutral-95
|
||||
theme)})))
|
||||
|
||||
(def absolute-fill
|
||||
{:position :absolute
|
||||
@@ -129,7 +132,7 @@
|
||||
:size :large}
|
||||
title])])
|
||||
|
||||
(defn header
|
||||
(defn- header-internal
|
||||
[{:keys [left-width right-width]}]
|
||||
(let [layout (reagent/atom {:left {:width (or left-width 8)
|
||||
:height header-height}
|
||||
@@ -153,7 +156,7 @@
|
||||
[{:keys [left-accessories left-component border-bottom
|
||||
right-accessories right-component insets get-layout
|
||||
title subtitle title-component style title-align
|
||||
background]
|
||||
background theme]
|
||||
:or {title-align :center
|
||||
border-bottom false}}]
|
||||
(let [status-bar-height (get insets :top 0)
|
||||
@@ -161,7 +164,8 @@
|
||||
[reanimated/view
|
||||
{:style (header-wrapper-style {:height height
|
||||
:background background
|
||||
:border-bottom border-bottom})}
|
||||
:border-bottom border-bottom
|
||||
:theme theme})}
|
||||
[rn/view
|
||||
{:pointer-events :box-none
|
||||
:height status-bar-height}]
|
||||
@@ -192,7 +196,6 @@
|
||||
:subtitle subtitle
|
||||
:title-align title-align
|
||||
:component title-component}]]
|
||||
|
||||
[rn/view
|
||||
{:style right-style
|
||||
:on-layout (handle-layout :right get-layout)
|
||||
@@ -200,3 +203,5 @@
|
||||
[header-actions
|
||||
{:accessories right-accessories
|
||||
:component right-component}]]]]]]))))
|
||||
|
||||
(def header (quo.theme/with-theme header-internal))
|
||||
|
||||
@@ -56,10 +56,9 @@
|
||||
|
||||
(defn- f-address-input-internal
|
||||
[]
|
||||
(let [status (reagent/atom :default)
|
||||
value (reagent/atom "")
|
||||
clipboard (reagent/atom nil)
|
||||
focused? (atom false)]
|
||||
(let [status (reagent/atom :default)
|
||||
value (reagent/atom "")
|
||||
focused? (atom false)]
|
||||
(fn [{:keys [scanned-value theme blur? on-change-text on-blur on-focus on-clear on-scan on-detect-ens
|
||||
ens-regex
|
||||
valid-ens?]}]
|
||||
@@ -75,9 +74,11 @@
|
||||
(reset! status :loading)
|
||||
(on-detect-ens text))))
|
||||
on-paste (fn []
|
||||
(when-not (empty? @clipboard)
|
||||
(on-change @clipboard)
|
||||
(reset! value @clipboard)))
|
||||
(clipboard/get-string
|
||||
(fn [clipboard]
|
||||
(when-not (empty? clipboard)
|
||||
(on-change clipboard)
|
||||
(reset! value clipboard)))))
|
||||
on-clear (fn []
|
||||
(reset! value "")
|
||||
(reset! status (if @focused? :active :default))
|
||||
@@ -100,7 +101,6 @@
|
||||
(when-not (empty? scanned-value)
|
||||
(on-change scanned-value)))
|
||||
[scanned-value])
|
||||
(clipboard/get-string #(reset! clipboard %))
|
||||
[rn/view {:style style/container}
|
||||
[rn/text-input
|
||||
{:accessibility-label :address-text-input
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
(colors/alpha (if blur?
|
||||
(colors/theme-colors colors/neutral-100 colors/white theme)
|
||||
(colors/custom-color customization-color
|
||||
(if (or (= :dark theme) colors/dark?) 60 50)))
|
||||
(if (= :dark theme) 60 50)))
|
||||
(if platform/ios? 1 0.2)))
|
||||
|
||||
(def text-input-container {:flex 1})
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
(def keycard-chip-height 28)
|
||||
|
||||
(defn card-container
|
||||
[locked?]
|
||||
[locked? theme]
|
||||
{:overflow :hidden
|
||||
:height keycard-height
|
||||
:align-items :flex-start
|
||||
@@ -13,22 +13,26 @@
|
||||
:border-width 1
|
||||
:border-color (if locked?
|
||||
colors/white-opa-5
|
||||
(colors/theme-colors colors/neutral-20 colors/neutral-80))
|
||||
(colors/theme-colors colors/neutral-20 colors/neutral-80 theme))
|
||||
:border-style :solid
|
||||
:border-radius 16
|
||||
:padding 16
|
||||
:background-color (if locked?
|
||||
(colors/theme-colors colors/danger colors/danger-opa-40)
|
||||
(colors/theme-colors colors/neutral-5 colors/neutral-90))})
|
||||
(colors/theme-colors colors/danger colors/danger-opa-40 theme)
|
||||
(colors/theme-colors colors/neutral-5 colors/neutral-90 theme))})
|
||||
|
||||
(defn keycard-logo
|
||||
[locked?]
|
||||
{:tint-color (if locked? colors/white (colors/theme-colors colors/neutral-100 colors/white))})
|
||||
[locked? theme]
|
||||
{:tint-color (if locked?
|
||||
colors/white
|
||||
(colors/theme-colors colors/neutral-100 colors/white theme))})
|
||||
|
||||
(defn keycard-watermark
|
||||
[locked?]
|
||||
[locked? theme]
|
||||
{:position :absolute
|
||||
:tint-color (if locked? colors/white-opa-5 (colors/theme-colors colors/neutral-100 colors/white))
|
||||
:tint-color (if locked?
|
||||
colors/white-opa-5
|
||||
(colors/theme-colors colors/neutral-100 colors/white theme))
|
||||
:align-self :center
|
||||
:height 280.48
|
||||
:transform [{:rotate "-30deg"} {:translateY -30}]
|
||||
|
||||
@@ -4,28 +4,30 @@
|
||||
[quo2.components.tags.tag :as tag]
|
||||
[quo2.foundations.colors :as colors]
|
||||
[quo2.foundations.resources :as resources]
|
||||
[utils.i18n :as i18n]))
|
||||
[utils.i18n :as i18n]
|
||||
[quo2.theme :as quo.theme]))
|
||||
|
||||
(defn keycard
|
||||
(defn- view-internal
|
||||
"This component based on the following properties:
|
||||
- :holder-name - Can be owner's name. Default is Empty
|
||||
- :locked? - Boolean to specify whether the keycard is locked or not
|
||||
- :theme :light/:dark
|
||||
"
|
||||
[{:keys [holder-name locked?]}]
|
||||
[{:keys [holder-name locked? theme]}]
|
||||
(let [label (if (boolean holder-name)
|
||||
(i18n/label :t/user-keycard {:name holder-name})
|
||||
(i18n/label :t/empty-keycard))]
|
||||
[rn/view {:style (style/card-container locked?)}
|
||||
[rn/view {:style (style/card-container locked? theme)}
|
||||
[rn/image
|
||||
{:source (resources/get-image :keycard-logo)
|
||||
:style (style/keycard-logo locked?)}]
|
||||
:style (style/keycard-logo locked? theme)}]
|
||||
[rn/image
|
||||
{:source (resources/get-image
|
||||
(if (or locked? (colors/dark?)) :keycard-chip-dark :keycard-chip-light))
|
||||
(if (or locked? (= :dark theme)) :keycard-chip-dark :keycard-chip-light))
|
||||
:style style/keycard-chip}]
|
||||
[rn/image
|
||||
{:source (resources/get-image :keycard-watermark)
|
||||
:style (style/keycard-watermark locked?)}]
|
||||
:style (style/keycard-watermark locked? theme)}]
|
||||
[tag/tag
|
||||
{:size 32
|
||||
:type (when locked? :icon)
|
||||
@@ -36,3 +38,5 @@
|
||||
:accessibility-label :holder-name
|
||||
:icon-color colors/white-70-blur
|
||||
:override-theme (when locked? :dark)}]]))
|
||||
|
||||
(def keycard (quo.theme/with-theme view-internal))
|
||||
|
||||
@@ -3,7 +3,8 @@
|
||||
[react-native.core :as rn]
|
||||
[react-native.masked-view :as masked-view]
|
||||
[react-native.reanimated :as reanimated]
|
||||
[reagent.core :as reagent]))
|
||||
[reagent.core :as reagent]
|
||||
[quo2.theme :as quo.theme]))
|
||||
|
||||
(def message-skeleton-height 54)
|
||||
|
||||
@@ -22,10 +23,10 @@
|
||||
;; Standlone message skeleton
|
||||
(defn- f-message-skeleton
|
||||
{:deprecated "quo2.components.loaders.skeleton-list.view should be used instead"}
|
||||
[]
|
||||
[{:keys [theme]}]
|
||||
|
||||
(let [color (colors/theme-colors colors/neutral-5 colors/neutral-70)
|
||||
loading-color (colors/theme-colors colors/neutral-10 colors/neutral-60)
|
||||
(let [color (colors/theme-colors colors/neutral-5 colors/neutral-70 theme)
|
||||
loading-color (colors/theme-colors colors/neutral-10 colors/neutral-60 theme)
|
||||
content-width (rand-nth message-content-width)
|
||||
author-width (content-width :author)
|
||||
message-width (content-width :message)
|
||||
@@ -76,14 +77,17 @@
|
||||
:end {:x 1 :y 0}
|
||||
:style animated-gradient-style}]]]))
|
||||
|
||||
(defn skeleton
|
||||
[parent-height]
|
||||
(defn- view-internal
|
||||
[{:keys [parent-height theme]}]
|
||||
(let [number-of-skeletons (int (Math/floor (/ parent-height message-skeleton-height)))]
|
||||
[rn/view
|
||||
{:style {:background-color (colors/theme-colors
|
||||
colors/white
|
||||
colors/neutral-90)
|
||||
colors/neutral-90
|
||||
theme)
|
||||
:flex 1}}
|
||||
(doall
|
||||
(for [n (range number-of-skeletons)]
|
||||
[:f> f-message-skeleton {:key n}]))]))
|
||||
[:f> f-message-skeleton {:key n :theme theme}]))]))
|
||||
|
||||
(def view (quo.theme/with-theme view-internal))
|
||||
|
||||
@@ -34,8 +34,8 @@
|
||||
:color color})}])]])
|
||||
|
||||
(defn- f-animated-skeleton-view
|
||||
[{:keys [style color skeleton-height animated? translate-x window-width] :as data}]
|
||||
(let [loading-color (colors/theme-colors colors/neutral-10 colors/neutral-60)]
|
||||
[{:keys [style color skeleton-height animated? translate-x window-width theme] :as data}]
|
||||
(let [loading-color (colors/theme-colors colors/neutral-10 colors/neutral-60 theme)]
|
||||
|
||||
(rn/use-effect
|
||||
(fn []
|
||||
@@ -73,10 +73,9 @@
|
||||
:height "100%"})
|
||||
skeleton-height (get-in constants/layout-dimensions [content :height])
|
||||
number-of-skeletons (int (Math/ceil (/ parent-height skeleton-height)))
|
||||
color (cond
|
||||
(and blur? (= theme :dark)) colors/white-opa-5
|
||||
(= theme :dark) colors/neutral-90
|
||||
:else colors/neutral-5)
|
||||
color (if (and blur? (= theme :dark))
|
||||
colors/white-opa-5
|
||||
(colors/theme-colors colors/neutral-5 colors/neutral-90 theme))
|
||||
component (if animated? animated-skeleton-view static-skeleton-view)]
|
||||
[rn/view
|
||||
{:style {:padding 8}
|
||||
|
||||
@@ -56,7 +56,9 @@
|
||||
(cond
|
||||
;; TODO: use account-switcher when available (issue #16456)
|
||||
(and support-account-switcher? (= content :account-switcher))
|
||||
[rn/view {:style style/account-switcher-placeholder}]
|
||||
[rn/pressable
|
||||
{:style style/account-switcher-placeholder
|
||||
:on-press #(js/alert "Not implemented yet")}]
|
||||
|
||||
(coll? content)
|
||||
(into [rn/view {:style style/right-actions-container}]
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
[reanimated/view {:style (style/animated-circle scale opacity color)}]))))))
|
||||
|
||||
(defn f-record-button-big
|
||||
[recording? ready-to-send? ready-to-lock? ready-to-delete? record-button-is-animating?
|
||||
record-button-at-initial-position? locked? reviewing-audio? recording-length-ms
|
||||
clear-timeout touch-active? recorder-ref reload-recorder-fn idle? on-send on-cancel]
|
||||
[{:keys [recording? ready-to-send? ready-to-lock? ready-to-delete? record-button-is-animating?
|
||||
record-button-at-initial-position? locked? reviewing-audio? recording-length-ms
|
||||
clear-timeout touch-active? recorder-ref reload-recorder-fn idle? on-send on-cancel theme]}]
|
||||
(let [scale (reanimated/use-shared-value 1)
|
||||
opacity (reanimated/use-shared-value 0)
|
||||
opacity-from (if @ready-to-lock? opacity-from-lock opacity-from-default)
|
||||
@@ -46,13 +46,14 @@
|
||||
(range 0 5))
|
||||
rings-color (cond
|
||||
@ready-to-lock? (colors/theme-colors colors/neutral-80-opa-5-opaque
|
||||
colors/neutral-80)
|
||||
colors/neutral-80
|
||||
theme)
|
||||
@ready-to-delete? colors/danger-50
|
||||
:else colors/primary-50)
|
||||
translate-y (reanimated/use-shared-value 0)
|
||||
translate-x (reanimated/use-shared-value 0)
|
||||
button-color colors/primary-50
|
||||
icon-color (if (and (not (colors/dark?)) @ready-to-lock?) colors/black colors/white)
|
||||
icon-color (if (and (not (= :dark theme)) @ready-to-lock?) colors/black colors/white)
|
||||
icon-opacity (reanimated/use-shared-value 1)
|
||||
red-overlay-opacity (reanimated/use-shared-value 0)
|
||||
gray-overlay-opacity (reanimated/use-shared-value 0)
|
||||
|
||||
@@ -17,7 +17,8 @@
|
||||
[quo2.components.record-audio.record-audio.buttons.record-button :as record-button]
|
||||
[clojure.string :as string]
|
||||
[utils.datetime :as datetime]
|
||||
[react-native.platform :as platform]))
|
||||
[react-native.platform :as platform]
|
||||
[quo2.theme :as quo.theme]))
|
||||
|
||||
(def ^:private min-audio-duration-ms 1000)
|
||||
(def ^:private max-audio-duration-ms (if platform/ios? 120800 120500))
|
||||
@@ -155,11 +156,11 @@
|
||||
(if @playing-audio? :i/pause :i/play)
|
||||
{:color (colors/theme-colors colors/neutral-100 colors/white)}]]))
|
||||
|
||||
(defn record-audio
|
||||
(defn- record-audio-internal
|
||||
[{:keys [on-init on-start-recording on-send on-cancel on-reviewing-audio
|
||||
record-audio-permission-granted
|
||||
on-request-record-audio-permission on-check-audio-permissions
|
||||
audio-file on-lock max-duration-ms]}]
|
||||
audio-file on-lock max-duration-ms theme]}]
|
||||
[:f>
|
||||
;; TODO we need to refactor this, and use :f> with defined function, currenly state is reseted each
|
||||
;; time parent component
|
||||
@@ -574,20 +575,23 @@
|
||||
[:f> send-button/f-send-button recording? ready-to-send? reviewing-audio?
|
||||
@force-show-controls?]
|
||||
[:f> record-button-big/f-record-button-big
|
||||
recording?
|
||||
ready-to-send?
|
||||
ready-to-lock?
|
||||
ready-to-delete?
|
||||
record-button-is-animating?
|
||||
record-button-at-initial-position?
|
||||
locked?
|
||||
reviewing-audio?
|
||||
recording-length-ms
|
||||
clear-timeout
|
||||
touch-active?
|
||||
recorder-ref
|
||||
reload-recorder
|
||||
idle?
|
||||
on-send
|
||||
on-cancel]
|
||||
{:recording? recording?
|
||||
:ready-to-send? ready-to-send?
|
||||
:ready-to-lock? ready-to-lock?
|
||||
:ready-to-delete? ready-to-delete?
|
||||
:record-button-is-animating? record-button-is-animating?
|
||||
:record-button-at-initial-position? record-button-at-initial-position?
|
||||
:locked? locked?
|
||||
:reviewing-audio? reviewing-audio?
|
||||
:recording-length-ms recording-length-ms
|
||||
:clear-timeout clear-timeout
|
||||
:touch-active? touch-active?
|
||||
:recorder-ref recorder-ref
|
||||
:reload-recorder-fn reload-recorder
|
||||
:idle? idle?
|
||||
:on-send on-send
|
||||
:on-cancel on-cancel
|
||||
:theme theme}]
|
||||
[:f> record-button/f-record-button recording? reviewing-audio?]]])))])
|
||||
|
||||
(def record-audio (quo.theme/with-theme record-audio-internal))
|
||||
|
||||
@@ -4,14 +4,16 @@
|
||||
[react-native.audio-toolkit :as audio]
|
||||
[taoensso.timbre :as log]
|
||||
[react-native.platform :as platform]
|
||||
[react-native.slider :as slider]))
|
||||
[react-native.slider :as slider]
|
||||
[quo2.theme :as quo.theme]))
|
||||
|
||||
(def ^:private thumb-light (js/require "../resources/images/icons2/12x12/thumb-light.png"))
|
||||
(def ^:private thumb-dark (js/require "../resources/images/icons2/12x12/thumb-dark.png"))
|
||||
|
||||
(defn f-soundtrack
|
||||
[{:keys [audio-current-time-ms player-ref style seeking-audio? max-audio-duration-ms]}]
|
||||
(let [audio-duration-ms (min max-audio-duration-ms (audio/get-player-duration player-ref))]
|
||||
(let [audio-duration-ms (min max-audio-duration-ms (audio/get-player-duration player-ref))
|
||||
theme (quo.theme/use-theme-value)]
|
||||
[:<>
|
||||
[slider/slider
|
||||
{:test-ID "soundtrack"
|
||||
@@ -31,8 +33,9 @@
|
||||
#(log/error "[record-audio] on seek - error: " %)))
|
||||
:on-value-change #(when @seeking-audio?
|
||||
(reset! audio-current-time-ms %))
|
||||
:thumb-image (if (colors/dark?) thumb-dark thumb-light)
|
||||
:minimum-track-tint-color (colors/theme-colors colors/primary-50 colors/primary-60)
|
||||
:thumb-image (quo.theme/theme-value thumb-light thumb-dark theme)
|
||||
:minimum-track-tint-color (colors/theme-colors colors/primary-50 colors/primary-60 theme)
|
||||
:maximum-track-tint-color (colors/theme-colors
|
||||
(if platform/ios? colors/neutral-20 colors/neutral-40)
|
||||
(if platform/ios? colors/neutral-80 colors/neutral-60))}]]))
|
||||
(if platform/ios? colors/neutral-80 colors/neutral-60)
|
||||
theme)}]]))
|
||||
|
||||
+15
-15
@@ -1,4 +1,4 @@
|
||||
(ns quo2.components.settings.style
|
||||
(ns quo2.components.settings.privacy-option.style
|
||||
(:require [quo2.foundations.colors :as colors]))
|
||||
|
||||
(def bullet-container
|
||||
@@ -8,8 +8,8 @@
|
||||
:align-self :flex-start})
|
||||
|
||||
(defn bullet
|
||||
[]
|
||||
{:background-color (colors/theme-colors colors/neutral-40 colors/neutral-50)
|
||||
[theme]
|
||||
{:background-color (colors/theme-colors colors/neutral-40 colors/neutral-50 theme)
|
||||
:border-radius 100
|
||||
:width 8
|
||||
:height 8
|
||||
@@ -28,23 +28,23 @@
|
||||
:padding-horizontal 12})
|
||||
|
||||
(defn selection-indicator-container
|
||||
[active?]
|
||||
[active? theme]
|
||||
{:height 20
|
||||
:width 20
|
||||
:border-radius 20
|
||||
:border-width 1
|
||||
:border-color (if active?
|
||||
(colors/theme-colors colors/primary-50 colors/primary-60)
|
||||
(colors/theme-colors colors/neutral-20 colors/neutral-80))})
|
||||
(colors/theme-colors colors/primary-50 colors/primary-60 theme)
|
||||
(colors/theme-colors colors/neutral-20 colors/neutral-80 theme))})
|
||||
|
||||
(defn selection-indicator
|
||||
[active?]
|
||||
[active? theme]
|
||||
{:margin-left :auto
|
||||
:height 14
|
||||
:width 14
|
||||
:background-color (if active?
|
||||
(colors/theme-colors colors/primary-50 colors/primary-60)
|
||||
(colors/theme-colors colors/white-opa-40 colors/neutral-80-opa-40))
|
||||
(colors/theme-colors colors/primary-50 colors/primary-60 theme)
|
||||
(colors/theme-colors colors/white-opa-40 colors/neutral-80-opa-40 theme))
|
||||
:border-radius 20
|
||||
:margin-right :auto
|
||||
:margin-top :auto
|
||||
@@ -60,7 +60,7 @@
|
||||
:align-self :center})
|
||||
|
||||
(defn card-footer
|
||||
[]
|
||||
[theme]
|
||||
{:flex 1
|
||||
:flex-direction :row
|
||||
:justify-content :space-between
|
||||
@@ -70,8 +70,8 @@
|
||||
:padding-vertical 12
|
||||
:border-radius 12
|
||||
:border-width 1
|
||||
:background-color (colors/theme-colors colors/neutral-5 colors/neutral-90)
|
||||
:border-color (colors/theme-colors colors/neutral-10 colors/neutral-80)})
|
||||
:background-color (colors/theme-colors colors/neutral-5 colors/neutral-90 theme)
|
||||
:border-color (colors/theme-colors colors/neutral-10 colors/neutral-80 theme)})
|
||||
|
||||
(def card-header-container
|
||||
{:flex-direction :row
|
||||
@@ -85,9 +85,9 @@
|
||||
:margin-left 4})
|
||||
|
||||
(defn privacy-option-card
|
||||
[active?]
|
||||
[active? theme]
|
||||
{:border-radius 16
|
||||
:border-width 1
|
||||
:border-color (if active?
|
||||
(colors/theme-colors colors/primary-50 colors/primary-60)
|
||||
(colors/theme-colors colors/neutral-10 colors/neutral-80))})
|
||||
(colors/theme-colors colors/primary-50 colors/primary-60 theme)
|
||||
(colors/theme-colors colors/neutral-10 colors/neutral-80 theme))})
|
||||
+27
-20
@@ -1,29 +1,30 @@
|
||||
(ns quo2.components.settings.privacy-option
|
||||
(ns quo2.components.settings.privacy-option.view
|
||||
(:require [quo2.components.icon :as icons]
|
||||
[quo2.components.markdown.text :as text]
|
||||
[quo2.components.selectors.selectors.view :as selectors]
|
||||
[quo2.components.settings.style :as style]
|
||||
[quo2.components.settings.privacy-option.style :as style]
|
||||
[quo2.foundations.colors :as colors]
|
||||
[react-native.core :as rn]))
|
||||
[react-native.core :as rn]
|
||||
[quo2.theme :as quo.theme]))
|
||||
|
||||
(defn- bullet
|
||||
[]
|
||||
[theme]
|
||||
[rn/view {:style style/bullet-container}
|
||||
[rn/view {:style (style/bullet)}]])
|
||||
[rn/view {:style (style/bullet theme)}]])
|
||||
|
||||
(defn- unordered-list
|
||||
[container-style list-items]
|
||||
[{:keys [container-style theme]} list-items]
|
||||
[rn/view {:style (merge style/list-container container-style)}
|
||||
(for [item list-items]
|
||||
^{:key (hash item)}
|
||||
[rn/view {:style style/list-item}
|
||||
[bullet]
|
||||
[bullet theme]
|
||||
[text/text {:size :paragraph-2} item]])])
|
||||
|
||||
(defn- card-footer
|
||||
[{:keys [active? label on-toggle]}]
|
||||
[{:keys [active? label on-toggle theme]}]
|
||||
[rn/touchable-without-feedback
|
||||
[rn/view {:style (style/card-footer)}
|
||||
[rn/view {:style (style/card-footer theme)}
|
||||
[rn/view {:style style/card-footer-label-container}
|
||||
[text/text {:size :paragraph-2} label]]
|
||||
[rn/view {:style style/card-footer-toggle-container}
|
||||
@@ -32,36 +33,42 @@
|
||||
:on-change on-toggle}]]]])
|
||||
|
||||
(defn- selection-indicator
|
||||
[active?]
|
||||
[rn/view {:style (style/selection-indicator-container active?)}
|
||||
[rn/view {:style (style/selection-indicator active?)}]])
|
||||
[active? theme]
|
||||
[rn/view {:style (style/selection-indicator-container active? theme)}
|
||||
[rn/view {:style (style/selection-indicator active? theme)}]])
|
||||
|
||||
(defn- card-header
|
||||
[{:keys [icon label active?]}]
|
||||
[{:keys [icon label active? theme]}]
|
||||
[rn/view {:style style/card-header-container}
|
||||
[icons/icon icon
|
||||
{:size 20
|
||||
:color (colors/theme-colors colors/neutral-50 colors/neutral-40)}]
|
||||
:color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme)}]
|
||||
[rn/view {:style style/card-header-label-container}
|
||||
[text/text {:weight :semi-bold} label]]
|
||||
[selection-indicator active?]])
|
||||
|
||||
(defn card
|
||||
[{:keys [active? header footer list-items icon on-select on-toggle]
|
||||
(defn- view-internal
|
||||
[{:keys [active? header footer list-items icon on-select on-toggle theme]
|
||||
:or {icon :i/world
|
||||
active? false}}]
|
||||
[rn/touchable-without-feedback
|
||||
{:on-press on-select
|
||||
:accessibility-label :privacy-option-card
|
||||
:testID :privacy-option-card}
|
||||
[rn/view (style/privacy-option-card active?)
|
||||
[rn/view (style/privacy-option-card active? theme)
|
||||
[card-header
|
||||
{:active? active?
|
||||
{:theme theme
|
||||
:active? active?
|
||||
:icon icon
|
||||
:label header}]
|
||||
[unordered-list (when-not footer {:margin-bottom 8}) list-items]
|
||||
[unordered-list
|
||||
{:theme theme
|
||||
:container-style (when-not footer {:margin-bottom 8})} list-items]
|
||||
(when footer
|
||||
[card-footer
|
||||
{:active? active?
|
||||
{:theme theme
|
||||
:active? active?
|
||||
:label footer
|
||||
:on-toggle on-toggle}])]])
|
||||
|
||||
(def view (quo.theme/with-theme view-internal))
|
||||
@@ -8,12 +8,14 @@
|
||||
(if tag 72 icon-height)))
|
||||
|
||||
(defn container
|
||||
[{:keys [in-card? tag]}]
|
||||
{:padding-horizontal 12
|
||||
:padding-vertical (if in-card? 12 13)
|
||||
:flex-direction :row
|
||||
:justify-content :space-between
|
||||
:height (if tag 96 48)})
|
||||
[{:keys [in-card? tag container-style]}]
|
||||
(merge {:padding-horizontal 12
|
||||
:padding-top (if in-card? 12 13)
|
||||
:padding-bottom (if in-card? 12 13)
|
||||
:flex-direction :row
|
||||
:justify-content :space-between
|
||||
:height (if tag 96 48)}
|
||||
container-style))
|
||||
|
||||
(def sub-container
|
||||
{:flex-direction :row
|
||||
|
||||
@@ -62,7 +62,8 @@
|
||||
(case tag
|
||||
:positive [status-tags/status-tag
|
||||
{:status {:type :positive}
|
||||
:label (i18n/label :t/positive)
|
||||
:label (:label tag-props)
|
||||
:no-icon? true
|
||||
:size :small
|
||||
:container-style {:margin-top 8}}]
|
||||
:context [context-tag/view
|
||||
|
||||
@@ -70,8 +70,7 @@
|
||||
on-change
|
||||
scroll-on-press?
|
||||
size
|
||||
style
|
||||
]}]
|
||||
style]}]
|
||||
[rn/view
|
||||
{:style (style/tab {:size size
|
||||
:default-tab-size default-tab-size
|
||||
@@ -132,6 +131,7 @@
|
||||
scroll-on-press?
|
||||
scrollable?
|
||||
style
|
||||
container-style
|
||||
size
|
||||
blur?
|
||||
in-scroll-view?
|
||||
@@ -159,35 +159,36 @@
|
||||
:size)
|
||||
(when scroll-on-press?
|
||||
{:initial-scroll-index (utils.collection/first-index #(= @active-tab-id (:id %)) data)})
|
||||
{:ref #(reset! flat-list-ref %)
|
||||
:style style
|
||||
{:ref #(reset! flat-list-ref %)
|
||||
:style style
|
||||
;; The padding-top workaround is needed because on Android
|
||||
;; {:overflow :visible} doesn't work on components inheriting
|
||||
;; from ScrollView (e.g. FlatList). There are open issues, here's
|
||||
;; just one about this topic:
|
||||
;; https://github.com/facebook/react-native/issues/31218
|
||||
:content-container-style {:padding-top (dec unread-count-offset)}
|
||||
:horizontal true
|
||||
:scroll-event-throttle 64
|
||||
:content-container-style
|
||||
(assoc container-style :padding-top (dec unread-count-offset))
|
||||
:horizontal true
|
||||
:scroll-event-throttle 64
|
||||
:shows-horizontal-scroll-indicator false
|
||||
:data data
|
||||
:key-fn (comp str :id)
|
||||
:on-scroll-to-index-failed identity
|
||||
:on-scroll (partial on-scroll-handler
|
||||
{:fade-end-percentage fade-end-percentage
|
||||
:fade-end? fade-end?
|
||||
:fading fading
|
||||
:on-scroll on-scroll})
|
||||
:render-fn tab-view
|
||||
:render-data {:active-tab-id active-tab-id
|
||||
:blur? blur?
|
||||
:customization-color customization-color
|
||||
:flat-list-ref flat-list-ref
|
||||
:number-of-items (count data)
|
||||
:on-change on-change
|
||||
:scroll-on-press? scroll-on-press?
|
||||
:size size
|
||||
:style style}})]]]
|
||||
:data data
|
||||
:key-fn (comp str :id)
|
||||
:on-scroll-to-index-failed identity
|
||||
:on-scroll (partial on-scroll-handler
|
||||
{:fade-end-percentage fade-end-percentage
|
||||
:fade-end? fade-end?
|
||||
:fading fading
|
||||
:on-scroll on-scroll})
|
||||
:render-fn tab-view
|
||||
:render-data {:active-tab-id active-tab-id
|
||||
:blur? blur?
|
||||
:customization-color customization-color
|
||||
:flat-list-ref flat-list-ref
|
||||
:number-of-items (count data)
|
||||
:on-change on-change
|
||||
:scroll-on-press? scroll-on-press?
|
||||
:size size
|
||||
:style style}})]]]
|
||||
[rn/view (merge style {:flex-direction :row})
|
||||
(map-indexed (fn [index item]
|
||||
^{:key (:id item)}
|
||||
@@ -198,6 +199,5 @@
|
||||
:number-of-items (count data)
|
||||
:on-change on-change
|
||||
:size size
|
||||
:style style}
|
||||
])
|
||||
:style style}])
|
||||
data)]))))
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
[rn/view {:style {:margin-left 4}}
|
||||
[icon/icon :i/keycard-card
|
||||
{:size 16
|
||||
:color (colors/theme-colors colors/neutral-50 colors/neutral-40)}]])])
|
||||
:color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme)}]])])
|
||||
|
||||
(defn- view-internal
|
||||
[]
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
:opacity (when (= state :disabled) 0.3)})
|
||||
|
||||
(defn add-container
|
||||
[]
|
||||
[theme]
|
||||
{:border-style :dashed
|
||||
:border-color (colors/theme-colors colors/neutral-30 colors/neutral-70)
|
||||
:border-color (colors/theme-colors colors/neutral-30 colors/neutral-70 theme)
|
||||
:justify-content :center
|
||||
:align-items :center
|
||||
:padding-vertical 0
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
|
||||
|
||||
(defn network-bridge-add
|
||||
[{:keys [network state]}]
|
||||
[rn/view {:style (merge (style/container network state) (style/add-container))}
|
||||
[{:keys [network state theme]}]
|
||||
[rn/view {:style (merge (style/container network state) (style/add-container theme))}
|
||||
[icon/icon :i/add-circle {:size 12 :no-color true}]])
|
||||
|
||||
(defn view-internal
|
||||
|
||||
+2
-2
@@ -100,7 +100,7 @@
|
||||
quo2.components.selectors.selectors.view
|
||||
quo2.components.settings.accounts.view
|
||||
quo2.components.settings.data-item.view
|
||||
quo2.components.settings.privacy-option
|
||||
quo2.components.settings.privacy-option.view
|
||||
quo2.components.settings.reorder-item.view
|
||||
quo2.components.settings.settings-item.view
|
||||
quo2.components.settings.category.view
|
||||
@@ -306,7 +306,7 @@
|
||||
(def checkbox quo2.components.selectors.selectors.view/checkbox)
|
||||
|
||||
;;;; Settings
|
||||
(def privacy-option quo2.components.settings.privacy-option/card)
|
||||
(def privacy-option quo2.components.settings.privacy-option.view/view)
|
||||
(def account quo2.components.settings.accounts.view/account)
|
||||
(def settings-item quo2.components.settings.settings-item.view/view)
|
||||
(def reorder-item quo2.components.settings.reorder-item.view/reorder-item)
|
||||
|
||||
@@ -272,17 +272,17 @@
|
||||
([color suffix]
|
||||
(custom-color color suffix nil))
|
||||
([color suffix opacity]
|
||||
(let [hex? (not (keyword? color))
|
||||
color (if (hex-string? (get colors-map color))
|
||||
(get colors-map color)
|
||||
(get-in colors-map [color suffix]))]
|
||||
(cond
|
||||
(and opacity hex?) (alpha color (/ opacity 100))
|
||||
opacity (alpha color (/ opacity 100))
|
||||
hex? color
|
||||
:else color))))))
|
||||
(let [hex? (not (keyword? color))
|
||||
resolved-color (cond hex? color
|
||||
(hex-string? (get colors-map color)) (get colors-map color)
|
||||
:else (get-in colors-map
|
||||
[color suffix]))]
|
||||
(if opacity
|
||||
(alpha resolved-color (/ opacity 100))
|
||||
resolved-color))))))
|
||||
|
||||
(defn custom-color-by-theme
|
||||
|
||||
"(custom-color-by-theme color suffix-light suffix-dark opacity-light opacity-dark)
|
||||
color :primary/:purple/...
|
||||
suffix-light 50/60
|
||||
@@ -290,6 +290,7 @@
|
||||
opacity-light 0-100 (optional)
|
||||
opacity-dark 0-100 (optional)
|
||||
theme :light/:dark (optional)"
|
||||
{:deprecated true :superseded-by "theme/colors"}
|
||||
([color suffix-light suffix-dark]
|
||||
(custom-color-by-theme color suffix-light suffix-dark nil nil (theme/get-theme)))
|
||||
([color suffix-light suffix-dark opacity-light opacity-dark]
|
||||
@@ -314,7 +315,3 @@
|
||||
([light dark override-theme]
|
||||
(let [theme (or override-theme (theme/get-theme))]
|
||||
(if (= theme :light) light dark))))
|
||||
|
||||
(defn dark?
|
||||
[]
|
||||
(theme/dark?))
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
(ns quo2.foundations.colors-test
|
||||
(:require [cljs.test :refer-macros [deftest testing is]]
|
||||
[quo2.foundations.colors :as colors]))
|
||||
|
||||
(deftest custom-color-resolver-test
|
||||
(testing "community color - resolves a hex string and ignores suffix of 50"
|
||||
(is (= "#fff" (colors/custom-color "#fff" 50))))
|
||||
(testing "community color - resolves a hex string and ignores suffix of 60"
|
||||
(is (= "#fff" (colors/custom-color "#fff" 60))))
|
||||
(testing "user/wallet/chat colors - resolves a keyword from the customization map with suffix 50"
|
||||
(is (= (get-in colors/customization [:blue 50]) (colors/custom-color :blue 50))))
|
||||
(testing "user/wallet/chat colors - resolves a keyword from the colors map with suffix 60"
|
||||
(is (= (get-in colors/customization [:blue 60]) (colors/custom-color :blue 60))))
|
||||
(testing "network colors - resolves a keyword with from the networks map which has no suffix"
|
||||
(is (= (:ethereum colors/networks) (colors/custom-color :ethereum nil)))))
|
||||
|
||||
(deftest custom-color-resolver-with-opacity-test
|
||||
(testing "community color with 10% opacity- resolves a hex string and ignores suffix of 50"
|
||||
(is (= "rgba(255,15,NaN,0.1)" (colors/custom-color "#fff" 50 10))))
|
||||
(testing "community color with 10% opacity- resolves a hex string and ignores suffix of 50"
|
||||
(is (= "rgba(255,15,NaN,0.9)" (colors/custom-color "#fff" 50 90))))
|
||||
(testing
|
||||
"user/wallet/chat colors with 10% opacity - resolves a keyword from the colors map with suffix 50"
|
||||
(is (= "rgba(42,74,245,0.1)" (colors/custom-color :blue 50 10))))
|
||||
(testing
|
||||
"network colors with 10% opacity - resolves a keyword with from the networks map which has no suffix"
|
||||
(is (= "rgba(117,142,235,0.1)" (colors/custom-color :ethereum nil 10)))))
|
||||
@@ -43,6 +43,10 @@
|
||||
[]
|
||||
(utils.transforms/js->clj (rn/use-context theme-context)))
|
||||
|
||||
(defn use-theme-value
|
||||
[]
|
||||
(keyword (:theme (use-theme))))
|
||||
|
||||
(defn ^:private f-with-theme
|
||||
[component props & args]
|
||||
(let [theme (-> (use-theme) :theme keyword)]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
(ns status-im.utils.image-processing
|
||||
(ns react-native.image-resizer
|
||||
(:require ["react-native-image-resizer" :default image-resizer]))
|
||||
|
||||
(defn resize
|
||||
@@ -17,8 +17,8 @@
|
||||
[status-im.signing.core :as signing]
|
||||
[status-im.ui.components.list-selection :as list-selection]
|
||||
[utils.re-frame :as rf]
|
||||
[status-im.utils.http :as http]
|
||||
[status-im.utils.platform :as platform]
|
||||
[utils.url :as url]
|
||||
[react-native.platform :as platform]
|
||||
[status-im.utils.random :as random]
|
||||
[status-im.utils.types :as types]
|
||||
[status-im.utils.universal-links.utils :as links]
|
||||
@@ -75,7 +75,7 @@
|
||||
|
||||
(defn check-if-phishing-url
|
||||
[{:keys [history history-index] :as browser}]
|
||||
(let [history-host (http/url-host (try (nth history history-index) (catch js/Error _)))]
|
||||
(let [history-host (url/url-host (try (nth history history-index) (catch js/Error _)))]
|
||||
(cond-> browser history-host (assoc :unsafe? (eth-phishing-detect history-host)))))
|
||||
|
||||
(defn resolve-ens-contenthash-callback
|
||||
@@ -88,7 +88,7 @@
|
||||
[{:keys [db]} {:keys [error? resolved-url]}]
|
||||
(when (not error?)
|
||||
(let [current-url (get-current-url (get-current-browser db))
|
||||
host (http/url-host current-url)]
|
||||
host (url/url-host current-url)]
|
||||
(if (and (not resolved-url) (ens/is-valid-eth-name? host))
|
||||
{:db (update db :browser/options assoc :resolving? true)
|
||||
:browser/resolve-ens-contenthash {:chain-id (ethereum/chain-id db)
|
||||
@@ -162,7 +162,7 @@
|
||||
{:events [:browser/ignore-unsafe]}
|
||||
[cofx]
|
||||
(let [browser (get-current-browser (:db cofx))
|
||||
host (http/url-host (get-current-url browser))]
|
||||
host (url/url-host (get-current-url browser))]
|
||||
(update-browser cofx (assoc browser :ignore-unsafe host))))
|
||||
|
||||
(defn can-go-forward?
|
||||
@@ -194,7 +194,7 @@
|
||||
{:events [:browser.callback/resolve-ens-multihash-success]}
|
||||
[{:keys [db] :as cofx} url]
|
||||
(let [current-url (get-current-url (get-current-browser db))
|
||||
host (http/url-host current-url)
|
||||
host (url/url-host current-url)
|
||||
path (subs current-url (+ (.indexOf ^js current-url host) (count host)))
|
||||
gateway url]
|
||||
(rf/merge cofx
|
||||
@@ -247,9 +247,9 @@
|
||||
(not= (.indexOf ^js url (second v)) -1))
|
||||
(:resolved-ens options)))
|
||||
resolved-url (if resolved-ens
|
||||
(http/normalize-url (string/replace url
|
||||
(second resolved-ens)
|
||||
(first resolved-ens)))
|
||||
(url/normalize-url (string/replace url
|
||||
(second resolved-ens)
|
||||
(first resolved-ens)))
|
||||
url)]
|
||||
(rf/merge cofx
|
||||
(update-browser-history browser resolved-url)
|
||||
@@ -282,7 +282,7 @@
|
||||
{:events [:browser.ui/url-submitted]}
|
||||
[cofx url]
|
||||
(let [browser (get-current-browser (:db cofx))
|
||||
normalized-url (http/normalize-and-decode-url url)]
|
||||
normalized-url (url/normalize-and-decode-url url)]
|
||||
(if (links/universal-link? normalized-url)
|
||||
{:dispatch [:universal-links/handle-url normalized-url]}
|
||||
(rf/merge cofx
|
||||
@@ -296,7 +296,7 @@
|
||||
If the browser is reused, the history is flushed"
|
||||
{:events [:browser.ui/open-url]}
|
||||
[{:keys [db] :as cofx} url]
|
||||
(let [normalized-url (http/normalize-and-decode-url url)
|
||||
(let [normalized-url (url/normalize-and-decode-url url)
|
||||
browser {:browser-id (random/id)
|
||||
:history-index 0
|
||||
:history [normalized-url]}]
|
||||
@@ -503,7 +503,7 @@
|
||||
{:keys [dapp? name]} browser
|
||||
dapp-name (if dapp?
|
||||
name
|
||||
(http/url-host
|
||||
(url/url-host
|
||||
url-original))]
|
||||
(cond
|
||||
(and (= type constants/history-state-changed)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
(ns status-im.browser.core-test
|
||||
(:require [cljs.test :refer-macros [deftest is testing]]
|
||||
[status-im.browser.core :as browser]
|
||||
[status-im.utils.http :as http]))
|
||||
[utils.url :as url]))
|
||||
|
||||
(defn has-wrong-properties?
|
||||
[result dapp-url expected-browser]
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
(defn get-dapp-id
|
||||
[result dapp-url]
|
||||
(some #(when (= (http/normalize-and-decode-url dapp-url) (first (:history %))) (:browser-id %))
|
||||
(some #(when (= (url/normalize-and-decode-url dapp-url) (first (:history %))) (:browser-id %))
|
||||
(vals (get-in result [:db :browser/browsers]))))
|
||||
|
||||
(deftest browser-test
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
[react-native.fs :as fs]
|
||||
[status-im2.constants :as constants]
|
||||
[utils.re-frame :as rf]
|
||||
[status-im.utils.platform :as platform]
|
||||
[react-native.platform :as platform]
|
||||
[taoensso.timbre :as log]))
|
||||
|
||||
(def temp-image-url (str (fs/cache-dir) "/StatusIm_Image.jpeg"))
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
[status-im.chat.models.loading :as chat.loading]
|
||||
[status-im.data-store.messages :as data-store.messages]
|
||||
[status-im.transport.message.protocol :as protocol]
|
||||
[status-im.utils.platform :as platform]
|
||||
[react-native.platform :as platform]
|
||||
[status-im.utils.types :as types]
|
||||
[status-im2.contexts.chat.messages.delete-message.events :as delete-message]
|
||||
[status-im2.contexts.chat.messages.list.events :as message-list]
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
status-im.currency.core
|
||||
status-im.ethereum.subscriptions
|
||||
status-im.fleet.core
|
||||
status-im.http.core
|
||||
[utils.i18n :as i18n]
|
||||
[status-im.keycard.core :as keycard]
|
||||
status-im.log-level.core
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
(ns status-im.http.core
|
||||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.utils.http :as http]))
|
||||
|
||||
(re-frame/reg-fx
|
||||
:http-post
|
||||
(fn [{:keys [url data response-validator on-success on-error timeout-ms opts]}]
|
||||
(let [all-opts (assoc opts
|
||||
:valid-response? response-validator
|
||||
:timeout-ms timeout-ms)]
|
||||
(http/post url data on-success on-error all-opts))))
|
||||
@@ -10,7 +10,7 @@
|
||||
[utils.re-frame :as rf]
|
||||
[utils.datetime :as datetime]
|
||||
[status-im.utils.keychain.core :as keychain]
|
||||
[status-im.utils.platform :as platform]
|
||||
[react-native.platform :as platform]
|
||||
[status-im.utils.types :as types]
|
||||
[status-im2.navigation.events :as navigation]
|
||||
[taoensso.timbre :as log]))
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
[status-im.ethereum.core :as ethereum]
|
||||
[status-im.keycard.keycard :as keycard]
|
||||
[native-module.core :as native-module]
|
||||
[status-im.utils.platform :as platform]
|
||||
[react-native.platform :as platform]
|
||||
[status-im.utils.types :as types]
|
||||
[taoensso.timbre :as log]))
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
[utils.re-frame :as rf]
|
||||
[utils.datetime :as datetime]
|
||||
[status-im.utils.keychain.core :as keychain]
|
||||
[status-im.utils.platform :as platform]
|
||||
[react-native.platform :as platform]
|
||||
[status-im.utils.types :as types]
|
||||
[status-im2.navigation.events :as navigation]
|
||||
[taoensso.timbre :as log]
|
||||
|
||||
@@ -24,10 +24,11 @@
|
||||
(defn displayed-name
|
||||
"Use preferred name, display-name, name or alias in that order"
|
||||
[{:keys [name display-name preferred-name alias public-key ens-verified primary-name]}]
|
||||
(let [display-name (if (string/blank? display-name) nil display-name)
|
||||
ens-name (or preferred-name
|
||||
display-name
|
||||
name)]
|
||||
(let [display-name (if (string/blank? display-name) nil display-name)
|
||||
preferred-name (if (string/blank? preferred-name) nil preferred-name)
|
||||
ens-name (or preferred-name
|
||||
display-name
|
||||
name)]
|
||||
;; Preferred name is our own otherwise we make sure it's verified
|
||||
(if (or preferred-name (and ens-verified name))
|
||||
ens-name
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
[native-module.core :as native-module]
|
||||
[status-im.ui.components.react :as react]
|
||||
[utils.re-frame :as rf]
|
||||
[status-im.utils.platform :as platform]
|
||||
[react-native.platform :as platform]
|
||||
[status-im.utils.types :as types]
|
||||
[utils.security.core :as security]))
|
||||
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
[utils.i18n :as i18n]
|
||||
[status-im.node.core :as node]
|
||||
[utils.re-frame :as rf]
|
||||
[status-im.utils.http :as http]
|
||||
[status-im.utils.types :as types]
|
||||
[status-im2.navigation.events :as navigation]))
|
||||
|
||||
(def url-regex
|
||||
@@ -97,31 +95,8 @@
|
||||
(rf/defn connect
|
||||
{:events [::connect-network-pressed]}
|
||||
[{:keys [db] :as cofx} network-id]
|
||||
(if-let [config (get-in db [:networks/networks network-id :config])]
|
||||
(if-let [upstream-url (get-in config [:UpstreamConfig :URL])]
|
||||
{:http-post {:url upstream-url
|
||||
:data (types/clj->json {:jsonrpc "2.0"
|
||||
:method "net_version"
|
||||
:id 2})
|
||||
:opts {:headers {"Content-Type" "application/json"}}
|
||||
:on-success (fn [{:keys [response-body]}]
|
||||
(let [response (http/parse-payload response-body)
|
||||
expected-network-id (:NetworkId config)
|
||||
rpc-network-id (when-let [res (:result response)]
|
||||
(js/parseInt res))]
|
||||
(if (and network-id (= expected-network-id rpc-network-id))
|
||||
(re-frame/dispatch [::connect-success network-id])
|
||||
(re-frame/dispatch [::connect-failure
|
||||
(if (not= expected-network-id rpc-network-id)
|
||||
(i18n/label :t/network-invalid-network-id)
|
||||
(i18n/label :t/network-invalid-url))]))))
|
||||
:on-error (fn [{:keys [response-body status-code]}]
|
||||
(let [reason (if status-code
|
||||
(i18n/label :t/network-invalid-status-code
|
||||
{:code status-code})
|
||||
(str response-body))]
|
||||
(re-frame/dispatch [::connect-failure reason])))}}
|
||||
(connect-success cofx network-id))
|
||||
(if (get-in db [:networks/networks network-id :config])
|
||||
(connect-success cofx network-id)
|
||||
(connect-failure cofx "A network with the specified id doesn't exist")))
|
||||
|
||||
(rf/defn delete
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
[native-module.core :as native-module]
|
||||
[status-im2.config :as config]
|
||||
[utils.re-frame :as rf]
|
||||
[status-im.utils.platform :as utils.platform]
|
||||
[status-im.utils.types :as types]
|
||||
[clojure.string :as string]))
|
||||
[clojure.string :as string]
|
||||
[react-native.platform :as platform]))
|
||||
|
||||
(defn- add-custom-bootnodes
|
||||
[config network all-bootnodes]
|
||||
@@ -173,7 +173,7 @@
|
||||
:WakuV2Config (merge (assoc wakuv2-config :Enabled wakuv2-enabled)
|
||||
wakuv2-default-config)
|
||||
:ShhextConfig
|
||||
{:BackupDisabledDataDir (utils.platform/no-backup-directory)
|
||||
{:BackupDisabledDataDir (if platform/android? "/../no_backup" "/")
|
||||
:InstallationID installation-id
|
||||
:MaxMessageDeliveryAttempts config/max-message-delivery-attempts
|
||||
:MailServerConfirmations config/mailserver-confirmations-enabled?
|
||||
@@ -205,7 +205,7 @@
|
||||
which will take care of building up the proper config based on settings in
|
||||
app-db"
|
||||
{:events [::save-new-config]}
|
||||
[{:keys [db]} config {:keys [on-success]}]
|
||||
[_ config {:keys [on-success]}]
|
||||
{:json-rpc/call [{:method "settings_saveSetting"
|
||||
:params [:node-config config]
|
||||
:on-success on-success}]})
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
[status-im.multiaccounts.update.core :as multiaccounts.update]
|
||||
[status-im2.config :as config]
|
||||
[utils.re-frame :as rf]
|
||||
[status-im.utils.platform :as utils.platform]
|
||||
[react-native.platform :as utils.platform]
|
||||
[status-im2.common.json-rpc.events :as json-rpc]
|
||||
[status-im2.navigation.events :as navigation]
|
||||
[taoensso.timbre :as log]))
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
[native-module.core :as native-module]
|
||||
[status-im.ethereum.stateofus :as stateofus]
|
||||
[utils.validators :as validators]
|
||||
[status-im.utils.http :as http]
|
||||
[utils.url :as url]
|
||||
[status-im.utils.wallet-connect :as wallet-connect]
|
||||
[taoensso.timbre :as log]
|
||||
[utils.security.core :as security]))
|
||||
@@ -60,7 +60,7 @@
|
||||
(defn parse-query-params
|
||||
[url]
|
||||
(let [url (goog.Uri. url)]
|
||||
(http/query->map (.getQuery url))))
|
||||
(url/query->map (.getQuery url))))
|
||||
|
||||
(defn match-uri
|
||||
[uri]
|
||||
@@ -247,7 +247,7 @@
|
||||
(ethereum/address? uri)
|
||||
(cb (address->eip681 uri))
|
||||
|
||||
(http/url? uri)
|
||||
(url/url? uri)
|
||||
(cb (match-browser-string uri))
|
||||
|
||||
(wallet-connect/url? uri)
|
||||
|
||||
@@ -145,5 +145,9 @@
|
||||
(js->clj event-js :keywordize-keys true))
|
||||
"curated.communities.update" (rf/dispatch [:fetched-contract-communities
|
||||
(js->clj event-js :keywordize-keys true)])
|
||||
"waku.backedup.profile" (rf/dispatch [:profile/update-profile-from-backup
|
||||
(js->clj event-js :keywordize-keys true)])
|
||||
"waku.backedup.settings" (rf/dispatch [:profile/update-setting-from-backup
|
||||
(js->clj event-js :keywordize-keys true)])
|
||||
|
||||
(log/debug "Event " type " not handled"))))
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
[reagent.core :as reagent]
|
||||
[status-im.ui.components.animation :as anim]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.utils.platform :as platform])
|
||||
[react-native.platform :as platform])
|
||||
(:require-macros [status-im.utils.views :as views]))
|
||||
|
||||
(def back-listener (atom nil))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
(ns status-im.ui.components.emoji-thumbnail.styles
|
||||
(:require [quo.design-system.colors :as colors]
|
||||
[status-im.ui.components.emoji-thumbnail.utils :as emoji-utils]
|
||||
[status-im.utils.platform :as platform]))
|
||||
[react-native.platform :as platform]))
|
||||
|
||||
(defn emoji-thumbnail-icon
|
||||
[color size]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
(ns status-im.ui.components.emoji-thumbnail.utils
|
||||
(:require [status-im.utils.platform :as platform]))
|
||||
(:require [react-native.platform :as platform]))
|
||||
|
||||
(defn emoji-font-size
|
||||
[container_size]
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
[reagent.core :as reagent]
|
||||
[status-im.ui.components.list.styles :as styles]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.utils.platform :as platform]))
|
||||
[react-native.platform :as platform]))
|
||||
|
||||
(def flat-list-class (reagent/adapt-react-class (.-FlatList react-native)))
|
||||
(def section-list-class (reagent/adapt-react-class (.-SectionList react-native)))
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
[status-im.ui.components.action-sheet :as action-sheet]
|
||||
[status-im.ui.components.dialog :as dialog]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.utils.http :as http]
|
||||
[status-im.utils.platform :as platform]))
|
||||
[utils.url :as url]
|
||||
[react-native.platform :as platform]))
|
||||
|
||||
(defn open-share
|
||||
[content]
|
||||
@@ -29,12 +29,12 @@
|
||||
:options [{:label (i18n/label :t/browsing-open-in-status)
|
||||
:action #(re-frame/dispatch [:browser.ui/open-url link])}
|
||||
{:label (i18n/label (platform-web-browser))
|
||||
:action #(.openURL ^js react/linking (http/normalize-url link))}]
|
||||
:action #(.openURL ^js react/linking (url/normalize-url link))}]
|
||||
:cancel-text (i18n/label :t/browsing-cancel)}))
|
||||
|
||||
(defn browse-in-web-browser
|
||||
[link]
|
||||
(show {:title (i18n/label :t/browsing-title)
|
||||
:options [{:label (i18n/label (platform-web-browser))
|
||||
:action #(.openURL ^js react/linking (http/normalize-url link))}]
|
||||
:action #(.openURL ^js react/linking (url/normalize-url link))}]
|
||||
:cancel-text (i18n/label :t/browsing-cancel)}))
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
[reagent.core :as reagent]
|
||||
[utils.i18n :as i18n]
|
||||
[status-im.ui.components.typography :as typography]
|
||||
[status-im.utils.platform :as platform]
|
||||
[react-native.platform :as platform]
|
||||
[status-im.utils.utils :as utils])
|
||||
(:require-macros [status-im.utils.views :as views]))
|
||||
|
||||
|
||||
@@ -1,61 +1,9 @@
|
||||
(ns status-im.ui.components.search-input.view
|
||||
(:require [quo.core :as quo]
|
||||
[quo.design-system.colors :as colors]
|
||||
[quo2.foundations.colors :as quo2.colors]
|
||||
[reagent.core :as reagent]
|
||||
[utils.i18n :as i18n]))
|
||||
|
||||
(defn search-input
|
||||
[{:keys [search-active?]}]
|
||||
(let [input-ref (atom nil)
|
||||
search-active? (or search-active? (reagent/atom nil))]
|
||||
(fn [{:keys [on-focus on-change on-blur on-cancel search-filter auto-focus]}]
|
||||
[quo/text-input
|
||||
{:placeholder (i18n/label :t/search)
|
||||
:accessibility-label :search-input
|
||||
:blur-on-submit true
|
||||
:multiline false
|
||||
:get-ref #(reset! input-ref %)
|
||||
:default-value search-filter
|
||||
:auto-focus auto-focus
|
||||
:on-cancel on-cancel
|
||||
:show-cancel true
|
||||
:auto-correct false
|
||||
:auto-capitalize :none
|
||||
:container-style {:border-radius 10
|
||||
:border-width 1
|
||||
:border-color (:ui-01 @colors/theme)
|
||||
:background-color (quo2.colors/theme-colors quo2.colors/white
|
||||
quo2.colors/neutral-90)
|
||||
:overflow :hidden}
|
||||
:input-style {:height 32
|
||||
:padding-top 2
|
||||
:padding-bottom 2
|
||||
:background-color (quo2.colors/theme-colors quo2.colors/white
|
||||
quo2.colors/neutral-90)}
|
||||
:before {:icon :main-icons/search2
|
||||
:style {:padding-horizontal 8
|
||||
:background-color (quo2.colors/theme-colors
|
||||
quo2.colors/white
|
||||
quo2.colors/neutral-90)}
|
||||
:on-press #(some-> ^js @input-ref
|
||||
(.focus))
|
||||
:icon-opts {:color (quo2.colors/theme-colors quo2.colors/neutral-50
|
||||
quo2.colors/white)}}
|
||||
:on-focus #(do
|
||||
(when on-focus
|
||||
(on-focus search-filter))
|
||||
(reset! search-active? true))
|
||||
:on-blur #(do
|
||||
(when on-blur
|
||||
(on-blur))
|
||||
(reset! search-active? false))
|
||||
:on-change (fn [e]
|
||||
(let [^js native-event (.-nativeEvent ^js e)
|
||||
text (.-text native-event)]
|
||||
(when on-change
|
||||
(on-change text))))}])))
|
||||
|
||||
(defn search-input-old
|
||||
[{:keys [search-active?]}]
|
||||
(let [input-ref (atom nil)
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
(ns status-im.ui.components.tabbar.core
|
||||
(:require [status-im.utils.platform :as platform]))
|
||||
|
||||
(defn get-height
|
||||
[]
|
||||
(if platform/android?
|
||||
56
|
||||
(if platform/iphone-x?
|
||||
84
|
||||
50)))
|
||||
@@ -2,7 +2,7 @@
|
||||
(:require ["react-native-webview" :default rn-webview]
|
||||
[reagent.core :as reagent]
|
||||
[status-im2.config :as config]
|
||||
[status-im.utils.platform :as platform]))
|
||||
[react-native.platform :as platform]))
|
||||
|
||||
(def webview-class
|
||||
(reagent/adapt-react-class rn-webview))
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
[status-im.ui.screens.browser.empty-tab.styles :as styles]
|
||||
[status-im.ui.screens.browser.views :as browser]
|
||||
[status-im.ui.screens.wallet.components.views :as components]
|
||||
[status-im.utils.http :as http])
|
||||
[utils.url :as url])
|
||||
(:require-macros [status-im.utils.views :as views]))
|
||||
|
||||
(defn hide-sheet-and-dispatch
|
||||
@@ -67,7 +67,7 @@
|
||||
[react/image
|
||||
{:onLoad #(reset! loaded true)
|
||||
:style {:width 32 :height 32 :position :absolute :top 4 :left 4}
|
||||
:source {:uri (str "https://" (http/url-host url) "/favicon.ico")}}])
|
||||
:source {:uri (str "https://" (url/url-host url) "/favicon.ico")}}])
|
||||
(when-not @loaded
|
||||
[react/view
|
||||
{:width 40
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
[status-im.ui.components.icons.icons :as icons]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.ui.screens.wallet.components.views :as components]
|
||||
[status-im.utils.http :as http]
|
||||
[utils.url :as url]
|
||||
[status-im.utils.utils :as utils]))
|
||||
|
||||
(defn hide-sheet-and-dispatch
|
||||
@@ -45,7 +45,7 @@
|
||||
permissions @(re-frame/subscribe [:dapps/permissions])
|
||||
fav? (get bookmarks url)
|
||||
connected? (some #{constants/dapp-permission-web3}
|
||||
(get-in permissions [(http/url-host url) :permissions]))]
|
||||
(get-in permissions [(url/url-host url) :permissions]))]
|
||||
[react/view {:flex 1}
|
||||
[quo/button
|
||||
{:style {:align-self :flex-end
|
||||
@@ -94,7 +94,7 @@
|
||||
:chevron true
|
||||
:on-press #(hide-sheet-and-dispatch
|
||||
[:bottom-sheet/show-sheet-old
|
||||
{:content (wallet-connection (http/url-host url) account)}])}]
|
||||
{:content (wallet-connection (url/url-host url) account)}])}]
|
||||
[quo/list-item
|
||||
{:theme :accent
|
||||
:title (i18n/label :t/connect-wallet)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.ui.components.topbar :as topbar]
|
||||
[status-im.ui.screens.wallet.components.views :as components]
|
||||
[status-im.utils.http :as http]))
|
||||
[utils.url :as url]))
|
||||
|
||||
(defn list-item
|
||||
[_]
|
||||
@@ -35,7 +35,7 @@
|
||||
[react/image
|
||||
{:onLoad #(reset! loaded true)
|
||||
:style {:width 32 :height 32 :position :absolute :top 4 :left 4}
|
||||
:source {:uri (str "https://" (http/url-host url) "/favicon.ico")}}])
|
||||
:source {:uri (str "https://" (url/url-host url) "/favicon.ico")}}])
|
||||
(when-not @loaded
|
||||
[react/view
|
||||
{:width 40
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
[status-im.ui.screens.browser.site-blocked.views :as site-blocked.views]
|
||||
[status-im.ui.screens.browser.styles :as styles]
|
||||
[status-im.ui.screens.wallet.components.views :as components]
|
||||
[status-im.utils.http :as http]
|
||||
[utils.url :as url]
|
||||
[status-im.utils.js-resources :as js-res]
|
||||
[utils.debounce :as debounce])
|
||||
(:require-macros [status-im.utils.views :as views]))
|
||||
@@ -52,7 +52,7 @@
|
||||
[react/touchable-highlight
|
||||
{:style styles/url-text-container
|
||||
:on-press #(re-frame/dispatch [:browser.ui/url-input-pressed])}
|
||||
[react/text {:number-of-lines 1} (http/url-host url-original)]])
|
||||
[react/text {:number-of-lines 1} (url/url-host url-original)]])
|
||||
(when-not unsafe?
|
||||
[react/touchable-highlight
|
||||
{:on-press #(.reload ^js @webview-ref/webview-ref)
|
||||
@@ -192,7 +192,7 @@
|
||||
{:flex 1
|
||||
:elevation -10}
|
||||
[react/view {:flex 1}
|
||||
(if (and unsafe? (not= (http/url-host url) ignore-unsafe))
|
||||
(if (and unsafe? (not= (url/url-host url) ignore-unsafe))
|
||||
[site-blocked.views/view
|
||||
{:can-go-back? can-go-back?
|
||||
:site browser-id}]
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
[status-im2.constants :as constants]
|
||||
[utils.i18n :as i18n]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.utils.platform :as platform]
|
||||
[react-native.platform :as platform]
|
||||
[utils.debounce :as debounce])
|
||||
(:require-macros [status-im.utils.views :refer [defview letsubs]]))
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
(ns status-im2.contexts.chat.messages.content.legacy-view
|
||||
(ns status-im.ui.screens.chat.message.legacy-view
|
||||
(:require
|
||||
[quo.design-system.colors :as quo.colors]
|
||||
[quo.react-native :as rn]
|
||||
@@ -9,7 +9,7 @@
|
||||
[status-im.ui.components.icons.icons :as icons]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.ui.screens.keycard.pin.styles :as styles]
|
||||
[status-im.utils.platform :as platform]))
|
||||
[react-native.platform :as platform]))
|
||||
|
||||
(def default-pin-retries-number 3)
|
||||
(def default-puk-retries-number 5)
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
[status-im.ui.screens.signing.views :as signing]
|
||||
[status-im.ui.screens.wallet.request.views :as request]
|
||||
[status-im.ui.screens.wallet.signing-phrase.views :as signing-phrase]
|
||||
[status-im.utils.platform :as platform]))
|
||||
[react-native.platform :as platform]))
|
||||
|
||||
(defn hide-panel-anim
|
||||
[bottom-anim-value alpha-value window-height]
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
[status-im.ui.components.common.common :as components.common]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im2.config :as config]
|
||||
[status-im.utils.platform :as platform])
|
||||
[react-native.platform :as platform])
|
||||
(:require-macros [status-im.utils.views :as views]))
|
||||
|
||||
(defn separator
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
[status-im.ui.screens.profile.visibility-status.styles :as styles]
|
||||
[status-im.ui.screens.profile.visibility-status.utils :as utils]
|
||||
[utils.re-frame :as rf]
|
||||
[status-im.utils.platform :as platform]))
|
||||
[react-native.platform :as platform]))
|
||||
|
||||
;; === Code Related to visibility-status-button ===
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
[status-im.ui.screens.signing.sheets :as sheets]
|
||||
[status-im.ui.screens.signing.styles :as styles]
|
||||
[status-im.ui.screens.wallet.components.views :as wallet.components]
|
||||
[status-im.utils.platform :as platform]
|
||||
[react-native.platform :as platform]
|
||||
[status-im.utils.types :as types]
|
||||
[status-im.utils.utils :as utils]
|
||||
[status-im.wallet.utils :as wallet.utils]
|
||||
|
||||
@@ -1,196 +0,0 @@
|
||||
(ns status-im.utils.http
|
||||
(:require ["react-native-fetch-polyfill" :default fetch]
|
||||
[clojure.string :as string]
|
||||
[status-im.utils.utils :as utils]
|
||||
[taoensso.timbre :as log])
|
||||
(:refer-clojure :exclude [get]))
|
||||
|
||||
;; Default HTTP request timeout ms
|
||||
(def http-request-default-timeout-ms 3000)
|
||||
|
||||
(defn- response-headers
|
||||
[^js response]
|
||||
(let [entries (es6-iterator-seq (.entries ^js (.-headers response)))]
|
||||
(reduce #(assoc %1 (string/trim (string/lower-case (first %2))) (string/trim (second %2)))
|
||||
{}
|
||||
entries)))
|
||||
|
||||
(defn raw-post
|
||||
"Performs an HTTP POST request and returns raw results :status :headers :body."
|
||||
([url body on-success] (raw-post url body on-success nil))
|
||||
([url body on-success on-error]
|
||||
(raw-post url body on-success on-error nil))
|
||||
([url body on-success on-error {:keys [timeout-ms headers]}]
|
||||
(-> (fetch
|
||||
url
|
||||
(clj->js {:method "POST"
|
||||
:headers (merge {"Cache-Control" "no-cache"} headers)
|
||||
:body body
|
||||
:timeout (or timeout-ms http-request-default-timeout-ms)}))
|
||||
(.then (fn [^js response]
|
||||
(->
|
||||
(.text response)
|
||||
(.then (fn [body]
|
||||
(on-success {:status (.-status response)
|
||||
:headers (response-headers response)
|
||||
:body body}))))))
|
||||
(.catch (or on-error
|
||||
(fn [error]
|
||||
(utils/show-popup "Error" url (str error))))))))
|
||||
|
||||
;; FIXME: Should be more extensible and accept multiple methods
|
||||
(defn post
|
||||
"Performs an HTTP POST request"
|
||||
([url data on-success]
|
||||
(post url data on-success nil))
|
||||
([url data on-success on-error]
|
||||
(post url data on-success on-error nil))
|
||||
([url data on-success on-error
|
||||
{:keys [valid-response? method timeout-ms headers]
|
||||
:or {method "POST"}}]
|
||||
(-> (fetch
|
||||
url
|
||||
(clj->js (merge {:method method
|
||||
:body data
|
||||
:timeout (or timeout-ms http-request-default-timeout-ms)}
|
||||
(when headers
|
||||
{:headers headers}))))
|
||||
(.then (fn [^js response]
|
||||
(-> (.text response)
|
||||
(.then (fn [response-body]
|
||||
(let [ok? (.-ok response)
|
||||
ok?' (if valid-response?
|
||||
(and ok? (valid-response? response))
|
||||
ok?)]
|
||||
{:response-body response-body
|
||||
:ok? ok?'
|
||||
:status-text (.-statusText response)
|
||||
:status-code (.-status response)}))))))
|
||||
(.then (fn [{:keys [ok?] :as data}]
|
||||
(cond
|
||||
(and on-success ok?)
|
||||
(on-success data)
|
||||
|
||||
(and on-error (not ok?))
|
||||
(on-error data)
|
||||
|
||||
:else false)))
|
||||
(.catch (fn [error]
|
||||
(if on-error
|
||||
(on-error {:response-body error})
|
||||
(utils/show-popup "Error" url (str error))))))))
|
||||
|
||||
(defn get
|
||||
"Performs an HTTP GET request"
|
||||
([url] (get url nil))
|
||||
([url on-success] (get url on-success nil))
|
||||
([url on-success on-error]
|
||||
(get url on-success on-error nil))
|
||||
([url on-success on-error params]
|
||||
(get url on-success on-error params nil))
|
||||
([url on-success on-error {:keys [valid-response? timeout-ms]} headers]
|
||||
(-> (fetch
|
||||
url
|
||||
(clj->js {:method "GET"
|
||||
:headers (merge {"Cache-Control" "no-cache"} headers)
|
||||
:timeout (or timeout-ms http-request-default-timeout-ms)}))
|
||||
(.then (fn [^js response]
|
||||
(->
|
||||
(.text response)
|
||||
(.then (fn [response-body]
|
||||
(let [ok? (.-ok response)
|
||||
ok?' (if valid-response?
|
||||
(and ok? (valid-response? response))
|
||||
ok?)]
|
||||
[response-body ok?']))))))
|
||||
(.then (fn [[response ok?]]
|
||||
(cond
|
||||
(and on-success ok?)
|
||||
(on-success response)
|
||||
|
||||
(and on-error (not ok?))
|
||||
(on-error response)
|
||||
|
||||
:else false)))
|
||||
(.catch (or on-error #())))))
|
||||
|
||||
(defn normalize-url
|
||||
[url]
|
||||
(str (when (and (string? url)
|
||||
(not (re-find #"^[a-zA-Z-_]+:/" url)))
|
||||
"https://")
|
||||
((fnil string/trim "") url)))
|
||||
|
||||
(def normalize-and-decode-url (comp js/decodeURI normalize-url))
|
||||
|
||||
(defn url-host
|
||||
[url]
|
||||
(try
|
||||
(when-let [host (.getDomain ^js (goog.Uri. url))]
|
||||
(when-not (string/blank? host)
|
||||
(string/replace host #"www." "")))
|
||||
(catch :default _ nil)))
|
||||
|
||||
(defn url?
|
||||
[s]
|
||||
(try
|
||||
(when-let [host (.getDomain ^js (goog.Uri. s))]
|
||||
(not (string/blank? host)))
|
||||
(catch :default _ nil)))
|
||||
|
||||
(defn parse-payload
|
||||
[o]
|
||||
(when o
|
||||
(try
|
||||
(js->clj (js/JSON.parse o)
|
||||
:keywordize-keys
|
||||
true)
|
||||
(catch :default _
|
||||
(log/debug (str "Failed to parse " o))))))
|
||||
|
||||
(defn url-sanitized?
|
||||
[uri]
|
||||
(not (nil? (re-find #"^(https:)([/|.|\w|\s|-])*\.(?:jpg|svg|png)$" uri))))
|
||||
|
||||
(defn- split-param
|
||||
[param]
|
||||
(->
|
||||
(string/split param #"=")
|
||||
(concat (repeat ""))
|
||||
(->>
|
||||
(take 2))))
|
||||
|
||||
(defn- url-decode
|
||||
[string]
|
||||
(some-> string
|
||||
str
|
||||
(string/replace #"\+" "%20")
|
||||
(js/decodeURIComponent)))
|
||||
|
||||
(defn query->map
|
||||
[qstr]
|
||||
(when-not (string/blank? qstr)
|
||||
(some->> (string/split qstr #"&")
|
||||
seq
|
||||
(mapcat split-param)
|
||||
(map url-decode)
|
||||
(apply hash-map))))
|
||||
|
||||
(defn filter-letters-numbers-and-replace-dot-on-dash
|
||||
[^js value]
|
||||
(let [cc (.charCodeAt value 0)]
|
||||
(cond (or (and (> cc 96) (< cc 123))
|
||||
(and (> cc 64) (< cc 91))
|
||||
(and (> cc 47) (< cc 58)))
|
||||
value
|
||||
(= cc 46)
|
||||
"-")))
|
||||
|
||||
(defn topic-from-url
|
||||
[url]
|
||||
(string/lower-case (apply str (map filter-letters-numbers-and-replace-dot-on-dash (url-host url)))))
|
||||
|
||||
(defn replace-port
|
||||
[url new-port]
|
||||
(when url
|
||||
(string/replace url #"(:\d+)" (str ":" new-port))))
|
||||
@@ -11,7 +11,7 @@
|
||||
[status-im.utils.build :as build]
|
||||
[utils.re-frame :as rf]
|
||||
[utils.datetime :as datetime]
|
||||
[status-im.utils.platform :as platform]
|
||||
[react-native.platform :as platform]
|
||||
[status-im.utils.types :as types]
|
||||
[status-im2.common.log :as log]
|
||||
[status-im2.config :as config]))
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
(ns status-im.utils.platform
|
||||
(:require ["react-native" :as react-native :refer (Dimensions)]))
|
||||
|
||||
(def platform
|
||||
(.-Platform react-native))
|
||||
|
||||
(def os
|
||||
(when platform
|
||||
(.-OS ^js platform)))
|
||||
|
||||
(def version
|
||||
(when platform
|
||||
(.-Version ^js platform)))
|
||||
|
||||
;; iPhone X dimensions
|
||||
(def x-height 812)
|
||||
(def xs-height 896)
|
||||
|
||||
(defn iphone-x-dimensions?
|
||||
[]
|
||||
(let [{:keys [height]} (-> Dimensions
|
||||
(.get "window")
|
||||
(js->clj :keywordize-keys true))]
|
||||
(or (= height x-height) (= height xs-height))))
|
||||
|
||||
(def android? (= os "android"))
|
||||
(def ios? (= os "ios"))
|
||||
(def iphone-x? (and ios? (iphone-x-dimensions?)))
|
||||
|
||||
(defn no-backup-directory
|
||||
[]
|
||||
(cond
|
||||
android? "/../no_backup"
|
||||
ios? "/"))
|
||||
|
||||
(defn android-version>=
|
||||
[v]
|
||||
(and android? (>= version v)))
|
||||
|
||||
(def low-device? (and android? (< version 29)))
|
||||
@@ -4,7 +4,7 @@
|
||||
[style]
|
||||
`(let [style# ~style
|
||||
common# (dissoc style# :android :ios)
|
||||
platform# (keyword status-im.utils.platform/os)
|
||||
platform# (keyword react-native.platform/os)
|
||||
platform-specific# (get style# platform#)]
|
||||
(if platform-specific#
|
||||
(merge common# platform-specific#)
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
(ns status-im.utils.styles
|
||||
(:require-macros status-im.utils.styles)
|
||||
(:require status-im.utils.platform))
|
||||
(:require react-native.platform))
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
[status-im.qr-scanner.core :as qr-scaner]
|
||||
[status-im.router.core :as router]
|
||||
[utils.re-frame :as rf]
|
||||
[status-im.utils.http :as http]
|
||||
[utils.url :as url]
|
||||
[utils.money :as money]
|
||||
[status-im.utils.universal-links.utils :as links]
|
||||
[status-im.utils.wallet-connect :as wallet-connect]
|
||||
@@ -140,7 +140,7 @@
|
||||
(assoc-in message path address))
|
||||
message
|
||||
(map vector paths addresses)) uri]))}})
|
||||
(if (and (http/url? uri) (not ignore-url))
|
||||
(if (and (url/url? uri) (not ignore-url))
|
||||
(if (links/universal-link? uri)
|
||||
{:dispatch [:universal-links/handle-url uri]}
|
||||
{:browser/show-browser-selection uri})
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
(ns status-im2.common.bottom-sheet.style
|
||||
(:require [quo2.foundations.colors :as colors]
|
||||
[quo2.theme :as theme]
|
||||
[status-im.utils.platform :as platform]))
|
||||
[react-native.platform :as platform]))
|
||||
|
||||
(defn handle
|
||||
[theme]
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
(ns status-im2.common.resources
|
||||
(:require [quo2.foundations.colors :as colors]))
|
||||
(ns status-im2.common.resources)
|
||||
|
||||
(def ui
|
||||
{:add-new-contact (js/require "../resources/images/ui2/add-contact.png")
|
||||
@@ -49,6 +48,38 @@
|
||||
:no-notifications-light (js/require "../resources/images/ui2/no-notifications-light.png")
|
||||
:no-notifications-dark (js/require "../resources/images/ui2/no-notifications-dark.png")})
|
||||
|
||||
(def ui-themed
|
||||
{:no-messages
|
||||
{:light (js/require "../resources/images/ui2/no-messages-light.png")
|
||||
:dark (js/require "../resources/images/ui2/no-messages-dark.png")}
|
||||
:no-group-chats
|
||||
{:light (js/require "../resources/images/ui2/no-group-chats-light.png")
|
||||
:dark (js/require "../resources/images/ui2/no-group-chats-dark.png")}
|
||||
:no-contacts
|
||||
{:light (js/require "../resources/images/ui2/no-contacts-light.png")
|
||||
:dark (js/require "../resources/images/ui2/no-contacts-dark.png")}
|
||||
:no-sent-requests
|
||||
{:light (js/require "../resources/images/ui2/no-sent-requests-light.png")
|
||||
:dark (js/require "../resources/images/ui2/no-sent-requests-dark.png")}
|
||||
:no-received-requests
|
||||
{:light (js/require "../resources/images/ui2/no-received-requests-light.png")
|
||||
:dark (js/require "../resources/images/ui2/no-received-requests-dark.png")}
|
||||
:no-communities
|
||||
{:light (js/require "../resources/images/ui2/no-communities-light.png")
|
||||
:dark (js/require "../resources/images/ui2/no-communities-dark.png")}
|
||||
:no-pending-communities
|
||||
{:light (js/require "../resources/images/ui2/no-pending-communities-light.png")
|
||||
:dark (js/require "../resources/images/ui2/no-pending-communities-dark.png")}
|
||||
:no-opened-communities
|
||||
{:light (js/require "../resources/images/ui2/no-opened-communities-light.png")
|
||||
:dark (js/require "../resources/images/ui2/no-opened-communities-dark.png")}
|
||||
:no-contacts-to-invite
|
||||
{:light (js/require "../resources/images/ui2/no-contacts-to-invite-light.png")
|
||||
:dark (js/require "../resources/images/ui2/no-contacts-to-invite-dark.png")}
|
||||
:no-notifications
|
||||
{:light (js/require "../resources/images/ui2/no-notifications-light.png")
|
||||
:dark (js/require "../resources/images/ui2/no-notifications-dark.png")}})
|
||||
|
||||
(def mock-images
|
||||
{:diamond (js/require "../resources/images/mock2/diamond.png")
|
||||
:coinbase (js/require "../resources/images/mock2/coinbase.png")
|
||||
@@ -97,5 +128,5 @@
|
||||
(get ui k))
|
||||
|
||||
(defn get-themed-image
|
||||
[k k2]
|
||||
(get ui (if (colors/dark?) k k2)))
|
||||
[k theme]
|
||||
(get-in ui-themed [k theme]))
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
(ns status-im2.contexts.chat.camera.view
|
||||
(:require
|
||||
[quo2.core :as quo]
|
||||
[quo2.foundations.colors :as colors]
|
||||
[react-native.camera-kit :as camera-kit]
|
||||
[react-native.core :as rn]
|
||||
[react-native.fast-image :as fast-image]
|
||||
[react-native.orientation :as orientation]
|
||||
[react-native.platform :as platform]
|
||||
[react-native.reanimated :as reanimated]
|
||||
[react-native.safe-area :as safe-area]
|
||||
[reagent.core :as reagent]
|
||||
[utils.i18n :as i18n]
|
||||
[status-im2.contexts.chat.camera.style :as style]
|
||||
[utils.re-frame :as rf]))
|
||||
(:require [oops.core :as oops]
|
||||
[quo2.core :as quo]
|
||||
[quo2.foundations.colors :as colors]
|
||||
[react-native.camera-kit :as camera-kit]
|
||||
[react-native.core :as rn]
|
||||
[react-native.fast-image :as fast-image]
|
||||
[react-native.orientation :as orientation]
|
||||
[react-native.platform :as platform]
|
||||
[react-native.reanimated :as reanimated]
|
||||
[react-native.safe-area :as safe-area]
|
||||
[reagent.core :as reagent]
|
||||
[status-im2.contexts.chat.camera.style :as style]
|
||||
[utils.i18n :as i18n]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(defn retake
|
||||
[flash uri]
|
||||
@@ -70,13 +70,12 @@
|
||||
|
||||
(defn zoom-buttons
|
||||
[]
|
||||
(let [current-zoom (reagent/atom 1)]
|
||||
(fn [top insets rotate]
|
||||
[rn/view {:style (style/zoom-container top insets)}
|
||||
[zoom-button {:value 0.5 :current-zoom current-zoom :rotate rotate}]
|
||||
[zoom-button {:value 1 :current-zoom current-zoom :rotate rotate}]
|
||||
[zoom-button {:value 2 :current-zoom current-zoom :rotate rotate}]
|
||||
[zoom-button {:value 3 :current-zoom current-zoom :rotate rotate}]])))
|
||||
(fn [top insets rotate current-zoom]
|
||||
[rn/view {:style (style/zoom-container top insets)}
|
||||
[zoom-button {:value 0.5 :current-zoom current-zoom :rotate rotate}]
|
||||
[zoom-button {:value 1.0 :current-zoom current-zoom :rotate rotate}]
|
||||
[zoom-button {:value 2.0 :current-zoom current-zoom :rotate rotate}]
|
||||
[zoom-button {:value 3.0 :current-zoom current-zoom :rotate rotate}]]))
|
||||
|
||||
|
||||
(defn- f-bottom-area
|
||||
@@ -108,7 +107,7 @@
|
||||
[:f> f-bottom-area args back flip-camera]))
|
||||
|
||||
(defn- f-camera-screen
|
||||
[{:keys [camera-ref uri camera-type current-orientation flash toggle-flash]}]
|
||||
[{:keys [camera-ref uri camera-type current-orientation flash toggle-flash current-zoom]}]
|
||||
(let [window (rn/get-window)
|
||||
{:keys [width height]} window
|
||||
camera-window-height (* width 1.33)
|
||||
@@ -140,9 +139,10 @@
|
||||
{:ref #(reset! camera-ref %)
|
||||
:style (style/camera-window width camera-window-height top)
|
||||
:flash-mode (if @flash :on :off)
|
||||
:camera-type @camera-type}])
|
||||
:camera-type @camera-type
|
||||
:zoom @current-zoom}])
|
||||
(when-not @uri
|
||||
[zoom-buttons top insets rotate])
|
||||
[zoom-buttons top insets rotate current-zoom])
|
||||
[rn/view {:style (style/confirmation-container insets @uri)}
|
||||
[quo/text
|
||||
{:on-press on-press
|
||||
@@ -171,5 +171,6 @@
|
||||
:camera-type (reagent/atom camera-kit/camera-type-back)
|
||||
:current-orientation (atom orientation/portrait)
|
||||
:flash flash
|
||||
:toggle-flash #(swap! flash not)}]
|
||||
:toggle-flash #(swap! flash not)
|
||||
:current-zoom (reagent/atom 1)}]
|
||||
[:f> f-camera-screen args]))
|
||||
|
||||
@@ -89,7 +89,6 @@
|
||||
(rn/use-effect
|
||||
(fn []
|
||||
(maximized-effect state animations dimensions chat-input)
|
||||
(reenter-screen-effect state dimensions chat-input)
|
||||
(layout-effect state)
|
||||
(kb-default-height-effect state)
|
||||
(background-effect state animations dimensions chat-input)
|
||||
@@ -98,7 +97,11 @@
|
||||
(empty-effect state animations subscriptions)
|
||||
(kb/add-kb-listeners props state animations dimensions)
|
||||
#(component-will-unmount props))
|
||||
[max-height]))
|
||||
[max-height])
|
||||
(rn/use-effect
|
||||
(fn []
|
||||
(reenter-screen-effect state dimensions subscriptions))
|
||||
[max-height subscriptions]))
|
||||
|
||||
(defn use-edit
|
||||
[{:keys [input-ref]}
|
||||
@@ -106,12 +109,15 @@
|
||||
{:keys [edit]}]
|
||||
(rn/use-effect
|
||||
(fn []
|
||||
(let [edit-text (get-in edit [:content :text])]
|
||||
(let [edit-text (get-in edit [:content :text])
|
||||
text-value-count (count @text-value)]
|
||||
(when (and edit @input-ref)
|
||||
(.focus ^js @input-ref)
|
||||
(.setNativeProps ^js @input-ref (clj->js {:text edit-text}))
|
||||
(reset! text-value edit-text)
|
||||
(reset! saved-cursor-position (count edit-text)))))
|
||||
(reset! saved-cursor-position (if (zero? text-value-count)
|
||||
(count edit-text)
|
||||
text-value-count)))))
|
||||
[(:message-id edit)]))
|
||||
|
||||
(defn use-reply
|
||||
|
||||
@@ -3,15 +3,16 @@
|
||||
[quo2.foundations.typography :as typography]
|
||||
[react-native.platform :as platform]
|
||||
[react-native.reanimated :as reanimated]
|
||||
[status-im2.contexts.chat.composer.constants :as constants]))
|
||||
[status-im2.contexts.chat.composer.constants :as constants]
|
||||
[quo2.theme :as quo.theme]))
|
||||
|
||||
(defn shadow
|
||||
[focused?]
|
||||
[focused? theme]
|
||||
(if platform/ios?
|
||||
{:shadow-radius 20
|
||||
:shadow-opacity (colors/theme-colors 0.1 0.7)
|
||||
:shadow-opacity (colors/theme-colors 0.1 0.7 theme)
|
||||
:shadow-color colors/neutral-100
|
||||
:shadow-offset {:width 0 :height (colors/theme-colors -4 -8)}}
|
||||
:shadow-offset {:width 0 :height (colors/theme-colors -4 -8 theme)}}
|
||||
{:elevation (if @focused? 10 0)}))
|
||||
|
||||
(def composer-sheet-and-jump-to-container
|
||||
@@ -21,17 +22,17 @@
|
||||
:right 0})
|
||||
|
||||
(defn sheet-container
|
||||
[insets {:keys [focused?]} {:keys [container-opacity]}]
|
||||
[insets {:keys [focused?]} {:keys [container-opacity]} theme]
|
||||
(reanimated/apply-animations-to-style
|
||||
{:opacity container-opacity}
|
||||
(merge
|
||||
{:border-top-left-radius 20
|
||||
:border-top-right-radius 20
|
||||
:padding-horizontal 20
|
||||
:background-color (colors/theme-colors colors/white colors/neutral-95)
|
||||
:background-color (colors/theme-colors colors/white colors/neutral-95 theme)
|
||||
:z-index 3
|
||||
:padding-bottom (:bottom insets)}
|
||||
(shadow focused?))))
|
||||
(shadow focused? theme))))
|
||||
|
||||
(def bar-container
|
||||
{:height constants/bar-container-height
|
||||
@@ -43,11 +44,11 @@
|
||||
:align-items :center})
|
||||
|
||||
(defn bar
|
||||
[]
|
||||
[theme]
|
||||
{:width 32
|
||||
:height 4
|
||||
:border-radius 100
|
||||
:background-color (colors/theme-colors colors/neutral-100-opa-5 colors/white-opa-10)})
|
||||
:background-color (colors/theme-colors colors/neutral-100-opa-5 colors/white-opa-10 theme)})
|
||||
|
||||
(defn input-container
|
||||
[height max-height]
|
||||
@@ -67,9 +68,9 @@
|
||||
[{:keys [saved-emoji-kb-extra-height]}
|
||||
{:keys [focused? maximized?]}
|
||||
{:keys [link-previews? images]}
|
||||
max-height]
|
||||
{:keys [max-height theme]}]
|
||||
(merge typography/paragraph-1
|
||||
{:color (colors/theme-colors :black :white)
|
||||
{:color (colors/theme-colors :black :white theme)
|
||||
:text-align-vertical :top
|
||||
:position (if @saved-emoji-kb-extra-height :relative :absolute)
|
||||
:top 0
|
||||
@@ -105,10 +106,10 @@
|
||||
:overflow :hidden}))
|
||||
|
||||
(defn blur-view
|
||||
[]
|
||||
[theme]
|
||||
{:style {:flex 1}
|
||||
:blur-radius (if platform/ios? 20 10)
|
||||
:blur-type (colors/theme-colors :light :dark)
|
||||
:blur-type (quo.theme/theme-value :light :dark theme)
|
||||
:blur-amount 20})
|
||||
|
||||
(defn shell-button
|
||||
|
||||
@@ -10,18 +10,18 @@
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(defn bar
|
||||
[]
|
||||
[theme]
|
||||
[rn/view {:style style/bar-container}
|
||||
[rn/view {:style (style/bar)}]])
|
||||
[rn/view {:style (style/bar theme)}]])
|
||||
|
||||
(defn f-blur-view
|
||||
[layout-height focused?]
|
||||
[{:keys [layout-height focused? theme]}]
|
||||
[reanimated/view {:style (style/blur-container layout-height focused?)}
|
||||
[blur/view (style/blur-view)]])
|
||||
[blur/view (style/blur-view theme)]])
|
||||
|
||||
(defn blur-view
|
||||
[layout-height focused?]
|
||||
[:f> f-blur-view layout-height focused?])
|
||||
[props]
|
||||
[:f> f-blur-view props])
|
||||
|
||||
(defn- f-shell-button
|
||||
[{:keys [focused?]} scroll-to-bottom-fn show-floating-scroll-down-button?]
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
[status-im2.contexts.chat.composer.handlers :as handler]
|
||||
[status-im2.contexts.chat.composer.gradients.view :as gradients]
|
||||
[status-im2.contexts.chat.composer.selection :as selection]
|
||||
[quo2.theme :as theme]))
|
||||
[quo2.theme :as quo.theme]))
|
||||
|
||||
(defn sheet-component
|
||||
[{:keys [insets
|
||||
@@ -32,7 +32,8 @@
|
||||
window-height
|
||||
blur-height
|
||||
opacity
|
||||
background-y]} props state]
|
||||
background-y
|
||||
theme]} props state]
|
||||
(let [{:keys [chat-screen-loaded?]
|
||||
:as subscriptions} (utils/init-subs)
|
||||
content-height (reagent/atom (or (:input-content-height
|
||||
@@ -87,7 +88,7 @@
|
||||
{:gesture
|
||||
(drag-gesture/drag-gesture props state animations subscriptions dimensions keyboard-shown)}
|
||||
[reanimated/view
|
||||
{:style (style/sheet-container insets state animations)
|
||||
{:style (style/sheet-container insets state animations theme)
|
||||
:on-layout #(handler/layout % state blur-height)}
|
||||
[sub-view/bar]
|
||||
(when chat-screen-loaded?
|
||||
@@ -119,13 +120,17 @@
|
||||
:on-change-text #(handler/change-text % props state)
|
||||
:on-selection-change #(handler/selection-change % props state)
|
||||
:on-selection #(selection/on-selection % props state)
|
||||
:keyboard-appearance (theme/theme-value :light :dark)
|
||||
:keyboard-appearance (quo.theme/theme-value :light :dark)
|
||||
:max-height max-height
|
||||
:max-font-size-multiplier 1
|
||||
:multiline true
|
||||
:placeholder (i18n/label :t/type-something)
|
||||
:placeholder-text-color (colors/theme-colors colors/neutral-30 colors/neutral-50)
|
||||
:style (style/input-text props state subscriptions max-height)
|
||||
:style (style/input-text props
|
||||
state
|
||||
subscriptions
|
||||
{:max-height max-height
|
||||
:theme theme})
|
||||
:max-length constants/max-text-size
|
||||
:accessibility-label :chat-message-input}]]
|
||||
(when chat-screen-loaded?
|
||||
@@ -139,6 +144,7 @@
|
||||
(defn composer
|
||||
[{:keys [insets scroll-to-bottom-fn show-floating-scroll-down-button?]}]
|
||||
(let [window-height (:height (rn/get-window))
|
||||
theme (quo.theme/use-theme-value)
|
||||
opacity (reanimated/use-shared-value 0)
|
||||
background-y (reanimated/use-shared-value (- window-height))
|
||||
blur-height (reanimated/use-shared-value (+ constants/composer-default-height
|
||||
@@ -149,10 +155,14 @@
|
||||
:show-floating-scroll-down-button? show-floating-scroll-down-button?
|
||||
:blur-height blur-height
|
||||
:opacity opacity
|
||||
:background-y background-y}
|
||||
:background-y background-y
|
||||
:theme theme}
|
||||
props (utils/init-props)
|
||||
state (utils/init-state)]
|
||||
[rn/view (when platform/ios? {:style {:z-index 1}})
|
||||
[reanimated/view {:style (style/background opacity background-y window-height)}]
|
||||
[sub-view/blur-view blur-height (:focused? state)]
|
||||
[sub-view/blur-view
|
||||
{:layout-height blur-height
|
||||
:focused? (:focused? state)
|
||||
:theme theme}]
|
||||
[:f> sheet-component extra-params props state]]))
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
:align-items :center})
|
||||
|
||||
(defn contact-requests-icon
|
||||
[]
|
||||
[theme]
|
||||
{:justify-content :center
|
||||
:align-items :center
|
||||
:width 32
|
||||
:height 32
|
||||
:border-radius 16
|
||||
:border-width 1
|
||||
:border-color (colors/theme-colors colors/neutral-20 colors/neutral-80)})
|
||||
:border-color (colors/theme-colors colors/neutral-20 colors/neutral-80 theme)})
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
[react-native.core :as rn]
|
||||
[status-im2.contexts.shell.activity-center.notification-types :as notification-types]
|
||||
[status-im2.contexts.chat.home.contact-request.style :as style]
|
||||
[utils.re-frame :as rf]))
|
||||
[utils.re-frame :as rf]
|
||||
[quo2.theme :as quo.theme]))
|
||||
|
||||
(defn get-display-name
|
||||
[{:keys [chat-id message]}]
|
||||
@@ -32,8 +33,8 @@
|
||||
" " (- (count requests) 2)
|
||||
" " (i18n/label :t/more))))
|
||||
|
||||
(defn contact-requests
|
||||
[requests]
|
||||
(defn- view-internal
|
||||
[{:keys [theme requests]}]
|
||||
(let [customization-color (rf/sub [:profile/customization-color])]
|
||||
[rn/touchable-opacity
|
||||
{:active-opacity 1
|
||||
@@ -43,20 +44,22 @@
|
||||
{:filter-status :unread
|
||||
:filter-type notification-types/contact-request}]))
|
||||
:style style/contact-requests}
|
||||
[rn/view {:style (style/contact-requests-icon)}
|
||||
[quo/icon :i/pending-user {:color (colors/theme-colors colors/neutral-50 colors/neutral-40)}]]
|
||||
[rn/view {:style (style/contact-requests-icon theme)}
|
||||
[quo/icon :i/pending-user
|
||||
{:color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme)}]]
|
||||
[rn/view {:style {:margin-left 8 :flex 1}}
|
||||
[quo/text
|
||||
{:size :paragraph-1
|
||||
:weight :semi-bold
|
||||
:style {:color (colors/theme-colors colors/neutral-100 colors/white)}}
|
||||
:weight :semi-bold}
|
||||
(i18n/label :t/pending-requests)]
|
||||
[quo/text
|
||||
{:size :paragraph-2
|
||||
:style {:color (colors/theme-colors colors/neutral-50 colors/neutral-40)}}
|
||||
:style {:color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme)}}
|
||||
(requests-summary requests)]]
|
||||
[quo/counter
|
||||
{:container-style {:margin-right 2}
|
||||
:customization-color customization-color
|
||||
:accessibility-label :pending-contact-requests-count}
|
||||
(count requests)]]))
|
||||
|
||||
(def view (quo.theme/with-theme view-internal))
|
||||
|
||||
@@ -97,8 +97,8 @@
|
||||
:header [:<>
|
||||
[common.header-spacing/view]
|
||||
(when (seq pending-contact-requests)
|
||||
[contact-request/contact-requests
|
||||
pending-contact-requests])]
|
||||
[contact-request/view
|
||||
{:requests pending-contact-requests}])]
|
||||
:sections items
|
||||
:sticky-section-headers-enabled false
|
||||
:render-section-header-fn contact-list/contacts-section-header
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
[react-native.orientation :as orientation]
|
||||
[react-native.platform :as platform]
|
||||
[react-native.reanimated :as reanimated]
|
||||
[status-im.utils.http :as http]
|
||||
[utils.url :as url]
|
||||
[status-im2.contexts.chat.lightbox.animations :as anim]
|
||||
[status-im2.contexts.chat.lightbox.style :as style]
|
||||
[utils.datetime :as datetime]
|
||||
@@ -45,8 +45,7 @@
|
||||
(defn drawer
|
||||
[messages index]
|
||||
(let [{:keys [content]} (nth messages index)
|
||||
uri (http/replace-port (:image content)
|
||||
(rf/sub [:mediaserver/port]))]
|
||||
uri (url/replace-port (:image content) (rf/sub [:mediaserver/port]))]
|
||||
[quo/action-drawer
|
||||
[[{:icon :i/save
|
||||
:accessibility-label :save-image
|
||||
@@ -65,8 +64,7 @@
|
||||
(defn share-image
|
||||
[messages index]
|
||||
(let [{:keys [content]} (nth messages index)
|
||||
uri (http/replace-port (:image content)
|
||||
(rf/sub [:mediaserver/port]))]
|
||||
uri (url/replace-port (:image content) (rf/sub [:mediaserver/port]))]
|
||||
(images/share-image uri)))
|
||||
|
||||
(defn top-view
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
[status-im2.contexts.chat.lightbox.zoomable-image.constants :as c]
|
||||
[status-im2.contexts.chat.lightbox.zoomable-image.style :as style]
|
||||
[status-im2.contexts.chat.lightbox.zoomable-image.utils :as utils]
|
||||
[status-im.utils.http :as http]))
|
||||
[utils.url :as url]))
|
||||
|
||||
(defn tap-gesture
|
||||
[on-tap]
|
||||
@@ -227,7 +227,7 @@
|
||||
(= curr-orientation orientation/portrait))}
|
||||
[reanimated/fast-image
|
||||
(merge
|
||||
{:source {:uri (http/replace-port (:image content) (rf/sub [:mediaserver/port]))}
|
||||
{:source {:uri (url/replace-port (:image content) (rf/sub [:mediaserver/port]))}
|
||||
:native-ID (when focused? :shared-element)
|
||||
:style (style/image dimensions animations render-data index)}
|
||||
(when image-dimensions-nil?
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
[status-im2.contexts.chat.messages.content.image.view :as image]
|
||||
[status-im2.contexts.chat.messages.content.text.view :as text]
|
||||
[utils.re-frame :as rf]
|
||||
[status-im.utils.http :as http]))
|
||||
[utils.url :as url]))
|
||||
|
||||
(def rectangular-style-count 3)
|
||||
|
||||
@@ -55,8 +55,8 @@
|
||||
:index index}])}
|
||||
[fast-image/fast-image
|
||||
{:style (style/image dimensions index portrait? images-count)
|
||||
:source {:uri (http/replace-port (:image (:content item))
|
||||
(rf/sub [:mediaserver/port]))}
|
||||
:source {:uri (url/replace-port (:image (:content item))
|
||||
(rf/sub [:mediaserver/port]))}
|
||||
:native-ID (when (and (= shared-element-id (:message-id item))
|
||||
(< index constants/max-album-photos))
|
||||
:shared-element)}]
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
[status-im2.constants :as constants]
|
||||
[utils.re-frame :as rf]
|
||||
[status-im2.contexts.chat.messages.content.text.view :as text]
|
||||
[status-im.utils.http :as http]))
|
||||
[utils.url :as url]))
|
||||
|
||||
(defn calculate-dimensions
|
||||
[width height]
|
||||
@@ -19,7 +19,7 @@
|
||||
(let [insets (safe-area/get-insets)
|
||||
dimensions (calculate-dimensions (or image-width 1000) (or image-height 1000))
|
||||
shared-element-id (rf/sub [:shared-element-id])
|
||||
image-local-url (http/replace-port (:image content) (rf/sub [:mediaserver/port]))]
|
||||
image-local-url (url/replace-port (:image content) (rf/sub [:mediaserver/port]))]
|
||||
[:<>
|
||||
(when (= index 0)
|
||||
[text/text-content message])
|
||||
|
||||
@@ -3,7 +3,8 @@
|
||||
[quo2.core :as quo]
|
||||
[react-native.core :as rn]
|
||||
[utils.re-frame :as rf]
|
||||
[status-im2.contexts.chat.messages.drawers.view :as drawers]))
|
||||
[status-im2.contexts.chat.messages.drawers.view :as drawers]
|
||||
[quo2.theme :as quo.theme]))
|
||||
|
||||
(defn- on-press
|
||||
[own message-id emoji-id emoji-reaction-id]
|
||||
@@ -17,26 +18,29 @@
|
||||
:emoji-id emoji-id}])))
|
||||
|
||||
(defn- on-long-press
|
||||
[message-id emoji-id user-message-content reactions]
|
||||
(rf/dispatch [:chat.ui/emoji-reactions-by-message-id
|
||||
{:message-id message-id
|
||||
:on-success (fn [response]
|
||||
(rf/dispatch [:chat/save-emoji-reaction-details
|
||||
{:reaction-authors-list response
|
||||
:selected-reaction emoji-id}])
|
||||
(rf/dispatch [:dismiss-keyboard])
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:on-close (fn []
|
||||
(rf/dispatch
|
||||
[:chat/clear-emoji-reaction-author-details]))
|
||||
:content (fn []
|
||||
[drawers/reaction-authors reactions])
|
||||
:selected-item (fn []
|
||||
user-message-content)
|
||||
:padding-bottom-override 0}]))}]))
|
||||
[{:keys [message-id emoji-id user-message-content reactions theme]}]
|
||||
(rf/dispatch
|
||||
[:chat.ui/emoji-reactions-by-message-id
|
||||
{:message-id message-id
|
||||
:on-success (fn [response]
|
||||
(rf/dispatch [:chat/save-emoji-reaction-details
|
||||
{:reaction-authors-list response
|
||||
:selected-reaction emoji-id}])
|
||||
(rf/dispatch [:dismiss-keyboard])
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:on-close (fn []
|
||||
(rf/dispatch
|
||||
[:chat/clear-emoji-reaction-author-details]))
|
||||
:content (fn []
|
||||
[drawers/reaction-authors
|
||||
{:reactions-order reactions
|
||||
:theme theme}])
|
||||
:selected-item (fn []
|
||||
user-message-content)
|
||||
:padding-bottom-override 0}]))}]))
|
||||
|
||||
(defn message-reactions-row
|
||||
[{:keys [message-id chat-id]} user-message-content]
|
||||
(defn- view-internal
|
||||
[{:keys [message-id chat-id theme]} user-message-content]
|
||||
(let [reactions (rf/sub [:chats/message-reactions message-id chat-id])]
|
||||
[:<>
|
||||
(when (seq reactions)
|
||||
@@ -55,10 +59,12 @@
|
||||
:neutral? own
|
||||
:clicks quantity
|
||||
:on-press #(on-press own message-id emoji-id emoji-reaction-id)
|
||||
:on-long-press #(on-long-press message-id
|
||||
emoji-id
|
||||
user-message-content
|
||||
(map :emoji-id reactions))
|
||||
:on-long-press #(on-long-press
|
||||
{:message-id message-id
|
||||
:emoji-id emoji-id
|
||||
:user-message-content user-message-content
|
||||
:reactions (map :emoji-id reactions)
|
||||
:theme theme})
|
||||
:accessibility-label (str "emoji-reaction-" emoji-id)}]])
|
||||
[quo/add-reaction
|
||||
{:on-press (fn []
|
||||
@@ -70,3 +76,5 @@
|
||||
:message-id message-id}])
|
||||
:selected-item (fn []
|
||||
user-message-content)}]))}]])]))
|
||||
|
||||
(def message-reactions-row (quo.theme/with-theme view-internal))
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
(ns status-im2.contexts.chat.messages.content.system.text.view
|
||||
(:require [react-native.core :as rn]
|
||||
[status-im2.contexts.chat.messages.content.legacy-view :as old-message]))
|
||||
[status-im.ui.screens.chat.message.legacy-view :as old-message]))
|
||||
|
||||
(defn text-content
|
||||
[message-data]
|
||||
|
||||
@@ -19,13 +19,14 @@
|
||||
[status-im2.contexts.chat.messages.content.audio.view :as audio]
|
||||
[quo2.core :as quo]
|
||||
[utils.re-frame :as rf]
|
||||
[status-im2.contexts.chat.messages.content.legacy-view :as old-message]
|
||||
[status-im.ui.screens.chat.message.legacy-view :as old-message]
|
||||
[status-im2.contexts.chat.composer.reply.view :as reply]
|
||||
[status-im2.common.not-implemented :as not-implemented]
|
||||
[utils.datetime :as datetime]
|
||||
[reagent.core :as reagent]
|
||||
[utils.address :as address]
|
||||
[react-native.gesture :as gesture]))
|
||||
[react-native.gesture :as gesture]
|
||||
[quo2.theme :as quo.theme]))
|
||||
|
||||
(def delivery-state-showing-time-ms 3000)
|
||||
|
||||
@@ -107,10 +108,10 @@
|
||||
|
||||
(declare on-long-press)
|
||||
|
||||
(defn user-message-content
|
||||
(defn- user-message-content-internal
|
||||
[]
|
||||
(let [show-delivery-state? (reagent/atom false)]
|
||||
(fn [{:keys [message-data context keyboard-shown? show-reactions? show-user-info?]}]
|
||||
(fn [{:keys [message-data context keyboard-shown? show-reactions? show-user-info? theme]}]
|
||||
(let [{:keys [content-type quoted-message content
|
||||
outgoing outgoing-status pinned-by]} message-data
|
||||
first-image (first (:album message-data))
|
||||
@@ -133,7 +134,7 @@
|
||||
{:accessibility-label (if (and outgoing (= outgoing-status :sending))
|
||||
:message-sending
|
||||
:message-sent)
|
||||
:underlay-color (colors/theme-colors colors/neutral-5 colors/neutral-90)
|
||||
:underlay-color (colors/theme-colors colors/neutral-5 colors/neutral-90 theme)
|
||||
:style (style/user-message-content
|
||||
{:first-in-group? (:first-in-group? message-data)
|
||||
:outgoing outgoing
|
||||
@@ -194,12 +195,15 @@
|
||||
(when show-reactions?
|
||||
[reactions/message-reactions-row message-data
|
||||
[rn/view {:pointer-events :none}
|
||||
[user-message-content
|
||||
{:message-data message-data
|
||||
[user-message-content-internal
|
||||
{:theme theme
|
||||
:message-data message-data
|
||||
:context context
|
||||
:keyboard-shown? keyboard-shown?
|
||||
:show-reactions? false}]]])]]))))
|
||||
|
||||
(def user-message-content (quo.theme/with-theme user-message-content-internal))
|
||||
|
||||
(defn on-long-press
|
||||
[message-data context keyboard-shown?]
|
||||
(rf/dispatch [:dismiss-keyboard])
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
:height 20})
|
||||
|
||||
(defn tab-count
|
||||
[active?]
|
||||
{:color (if (or active? (colors/dark?)) colors/white colors/neutral-100)})
|
||||
[active? theme]
|
||||
{:color (if (or active? (= :dark theme)) colors/white colors/neutral-100)})
|
||||
|
||||
(def tabs-container
|
||||
{:flex 1
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
:ens-verified ens-verified
|
||||
:added? added?}]))
|
||||
|
||||
(defn get-tabs-data
|
||||
[reaction-authors selected-tab reactions-order]
|
||||
(defn- get-tabs-data
|
||||
[{:keys [reaction-authors selected-tab reactions-order theme]}]
|
||||
(map (fn [reaction-type-int]
|
||||
(let [author-details (get reaction-authors reaction-type-int)]
|
||||
{:id reaction-type-int
|
||||
@@ -42,12 +42,13 @@
|
||||
{:weight :medium
|
||||
:size :paragraph-1
|
||||
:style (style/tab-count (= selected-tab
|
||||
reaction-type-int))}
|
||||
reaction-type-int)
|
||||
theme)}
|
||||
(count author-details)]]}))
|
||||
reactions-order))
|
||||
|
||||
(defn reaction-authors-comp
|
||||
[selected-tab reaction-authors reactions-order]
|
||||
(defn- reaction-authors-comp
|
||||
[{:keys [selected-tab reaction-authors reactions-order theme]}]
|
||||
[:<>
|
||||
[rn/view style/tabs-container
|
||||
[quo/tabs
|
||||
@@ -56,7 +57,10 @@
|
||||
:in-scroll-view? true
|
||||
:on-change #(reset! selected-tab %)
|
||||
:default-active @selected-tab
|
||||
:data (get-tabs-data reaction-authors @selected-tab reactions-order)}]]
|
||||
:data (get-tabs-data {:reaction-authors reaction-authors
|
||||
:selected-tab @selected-tab
|
||||
:reactions-order reactions-order
|
||||
:theme theme})}]]
|
||||
[gesture/flat-list
|
||||
{:data (for [contact (get reaction-authors @selected-tab)]
|
||||
contact)
|
||||
@@ -65,13 +69,17 @@
|
||||
:style style/authors-list}]])
|
||||
|
||||
(defn reaction-authors
|
||||
[reactions-order]
|
||||
[{:keys [reactions-order theme]}]
|
||||
(let [{:keys [reaction-authors-list
|
||||
selected-reaction]} (rf/sub [:chat/reactions-authors])
|
||||
selected-tab (reagent/atom (or selected-reaction
|
||||
(first (keys reaction-authors-list))))]
|
||||
(fn []
|
||||
[reaction-authors-comp selected-tab reaction-authors-list reactions-order])))
|
||||
[reaction-authors-comp
|
||||
{:selected-tab selected-tab
|
||||
:reaction-authors reaction-authors-list
|
||||
:reactions-order reactions-order
|
||||
:theme theme}])))
|
||||
|
||||
(defn pin-message
|
||||
[{:keys [chat-id pinned pinned-by] :as message-data}]
|
||||
|
||||
@@ -18,29 +18,30 @@
|
||||
{:padding-vertical 16})
|
||||
|
||||
(defn header-container
|
||||
[show?]
|
||||
[show? theme]
|
||||
{:display (if show? :flex :none)
|
||||
:background-color (colors/theme-colors colors/white colors/neutral-100)
|
||||
:background-color (colors/theme-colors colors/white colors/neutral-100 theme)
|
||||
:top (- overscroll-cover-height)
|
||||
:margin-bottom (- overscroll-cover-height)})
|
||||
|
||||
(defn header-cover
|
||||
[cover-bg-color]
|
||||
[cover-bg-color theme]
|
||||
{:flex 1
|
||||
:height (+ overscroll-cover-height cover-height)
|
||||
:background-color (colors/theme-colors
|
||||
(colors/custom-color cover-bg-color 50 20)
|
||||
(colors/custom-color cover-bg-color 50 40))})
|
||||
(colors/custom-color cover-bg-color 50 40)
|
||||
theme)})
|
||||
|
||||
(defn header-bottom-part
|
||||
[animation]
|
||||
[animation theme]
|
||||
(reanimated/apply-animations-to-style
|
||||
{:border-top-right-radius animation
|
||||
:border-top-left-radius animation}
|
||||
{:top -16
|
||||
:margin-bottom -16
|
||||
:padding-bottom 24
|
||||
:background-color (colors/theme-colors colors/white colors/neutral-95)}))
|
||||
:background-color (colors/theme-colors colors/white colors/neutral-95 theme)}))
|
||||
|
||||
(def header-avatar
|
||||
{:top header-avatar-top-offset
|
||||
|
||||
@@ -19,7 +19,8 @@
|
||||
[status-im2.contexts.chat.messages.navigation.style :as navigation.style]
|
||||
[status-im2.contexts.shell.jump-to.constants :as jump-to.constants]
|
||||
[utils.i18n :as i18n]
|
||||
[utils.re-frame :as rf]))
|
||||
[utils.re-frame :as rf]
|
||||
[quo2.theme :as quo.theme]))
|
||||
|
||||
(defonce ^:const threshold-percentage-to-show-floating-scroll-down-button 75)
|
||||
(defonce ^:const loading-indicator-extra-spacing 250)
|
||||
@@ -83,8 +84,8 @@
|
||||
on-loaded])
|
||||
(if platform/low-device? 700 100)))))
|
||||
|
||||
(defn contact-icon
|
||||
[{:keys [ens-verified added?]}]
|
||||
(defn- contact-icon
|
||||
[{:keys [ens-verified added?]} theme]
|
||||
(when (or ens-verified added?)
|
||||
[rn/view
|
||||
{:style {:padding-left 10
|
||||
@@ -93,18 +94,21 @@
|
||||
[quo/icon :i/verified
|
||||
{:no-color true
|
||||
:size 20
|
||||
:color (colors/theme-colors colors/success-50 colors/success-60)}]
|
||||
:color (colors/theme-colors
|
||||
(colors/custom-color :success 50)
|
||||
(colors/custom-color :success 60)
|
||||
theme)}]
|
||||
(when added?
|
||||
[quo/icon :i/contact
|
||||
{:no-color true
|
||||
:size 20
|
||||
:color (colors/theme-colors colors/primary-50 colors/primary-60)}]))]))
|
||||
:color (colors/theme-colors colors/primary-50 colors/primary-60 theme)}]))]))
|
||||
|
||||
(def header-extrapolation-option
|
||||
{:extrapolateLeft "clamp"
|
||||
:extrapolateRight "clamp"})
|
||||
|
||||
(defn skeleton-list-props
|
||||
(defn- skeleton-list-props
|
||||
[content parent-height animated?]
|
||||
{:content content
|
||||
:parent-height parent-height
|
||||
@@ -128,9 +132,9 @@
|
||||
[quo/skeleton-list (skeleton-list-props :messages parent-height true)]])))
|
||||
|
||||
(defn list-header
|
||||
[insets able-to-send-message?]
|
||||
[insets able-to-send-message? theme]
|
||||
[rn/view
|
||||
{:background-color (colors/theme-colors colors/white colors/neutral-95)
|
||||
{:background-color (colors/theme-colors colors/white colors/neutral-95 theme)
|
||||
:height (+ (if able-to-send-message?
|
||||
(+ composer.constants/composer-default-height
|
||||
jump-to.constants/floating-shell-button-height
|
||||
@@ -190,7 +194,7 @@
|
||||
chat-id]))}]}]))
|
||||
|
||||
(defn f-list-footer
|
||||
[{:keys [chat scroll-y cover-bg-color on-layout]}]
|
||||
[{:keys [chat scroll-y cover-bg-color on-layout theme]}]
|
||||
(let [{:keys [chat-id chat-name emoji chat-type
|
||||
group-chat]} chat
|
||||
all-loaded? (rf/sub [:chats/all-loaded? chat-id])
|
||||
@@ -211,10 +215,10 @@
|
||||
header-extrapolation-option)]
|
||||
[rn/view (add-inverted-y-android {:flex 1})
|
||||
[rn/view
|
||||
{:style (style/header-container all-loaded?)
|
||||
{:style (style/header-container all-loaded? theme)
|
||||
:on-layout on-layout}
|
||||
[rn/view {:style (style/header-cover cover-bg-color)}]
|
||||
[reanimated/view {:style (style/header-bottom-part border-animation)}
|
||||
[rn/view {:style (style/header-cover cover-bg-color theme)}]
|
||||
[reanimated/view {:style (style/header-bottom-part border-animation theme)}
|
||||
[rn/view {:style style/header-avatar}
|
||||
[rn/view {:style {:align-items :flex-start}}
|
||||
(when-not group-chat
|
||||
@@ -229,7 +233,7 @@
|
||||
:style {:margin-top (if group-chat 54 12)}
|
||||
:number-of-lines 1}
|
||||
display-name
|
||||
[contact-icon contact]]
|
||||
[contact-icon contact theme]]
|
||||
(when bio
|
||||
[quo/text {:style style/bio}
|
||||
bio])
|
||||
@@ -251,11 +255,12 @@
|
||||
(reset! messages-view-header-height (+ height y))))
|
||||
|
||||
(defn render-fn
|
||||
[{:keys [type value content-type] :as message-data} _ _
|
||||
[{:keys [type value content-type theme] :as message-data} _ _
|
||||
{:keys [context keyboard-shown?]}]
|
||||
(when (not= content-type constants/content-type-contact-request)
|
||||
[rn/view
|
||||
(add-inverted-y-android {:background-color (colors/theme-colors colors/white colors/neutral-95)})
|
||||
(add-inverted-y-android
|
||||
{:background-color (colors/theme-colors colors/white colors/neutral-95 theme)})
|
||||
(cond
|
||||
(= type :datemark)
|
||||
[quo/divider-date value]
|
||||
@@ -275,7 +280,8 @@
|
||||
|
||||
(defn f-messages-list-content
|
||||
[{:keys [chat insets scroll-y content-height cover-bg-color keyboard-shown?]}]
|
||||
(let [{window-height :height} (rn/get-window)
|
||||
(let [theme (quo.theme/use-theme-value)
|
||||
{window-height :height} (rn/get-window)
|
||||
{:keys [keyboard-height]} (hooks/use-keyboard)
|
||||
context (rf/sub [:chats/current-chat-message-list-view-context])
|
||||
messages (rf/sub [:chats/raw-chat-messages-stream (:chat-id chat)])
|
||||
@@ -286,16 +292,18 @@
|
||||
{:key-fn list-key-fn
|
||||
:ref list-ref
|
||||
:header [:<>
|
||||
[list-header insets (:able-to-send-message? context)]
|
||||
[list-header insets (:able-to-send-message? context) theme]
|
||||
(when (= (:chat-type chat) constants/private-group-chat-type)
|
||||
[list-group-chat-header chat])]
|
||||
:footer [list-footer
|
||||
{:chat chat
|
||||
{:theme theme
|
||||
:chat chat
|
||||
:scroll-y scroll-y
|
||||
:cover-bg-color cover-bg-color
|
||||
:on-layout footer-on-layout}]
|
||||
:data messages
|
||||
:render-data {:context context
|
||||
:render-data {:theme theme
|
||||
:context context
|
||||
:keyboard-shown? keyboard-shown?
|
||||
:insets insets}
|
||||
:render-fn render-fn
|
||||
@@ -341,10 +349,12 @@
|
||||
20)
|
||||
(colors/custom-color cover-bg-color
|
||||
50
|
||||
40))
|
||||
40)
|
||||
theme)
|
||||
(colors/theme-colors
|
||||
colors/white
|
||||
colors/neutral-95))})
|
||||
colors/neutral-95
|
||||
theme))})
|
||||
;;TODO(rasom) https://github.com/facebook/react-native/issues/30034
|
||||
:inverted (when platform/ios? true)
|
||||
:on-layout (fn [e]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
(ns status-im2.contexts.chat.messages.navigation.view
|
||||
(:require [quo2.core :as quo]
|
||||
[quo2.foundations.colors :as colors]
|
||||
[quo2.theme :as theme]
|
||||
[quo2.theme :as quo.theme]
|
||||
[re-frame.db]
|
||||
[react-native.blur :as blur]
|
||||
[react-native.core :as rn]
|
||||
@@ -108,4 +108,4 @@
|
||||
[params]
|
||||
[:f> f-view params])
|
||||
|
||||
(def navigation-view (theme/with-theme internal-navigation-view))
|
||||
(def navigation-view (quo.theme/with-theme internal-navigation-view))
|
||||
|
||||
@@ -10,13 +10,14 @@
|
||||
[status-im2.common.contact-list.view :as contact-list]
|
||||
[status-im2.common.resources :as resources]
|
||||
[status-im2.common.contact-list-item.view :as contact-list-item]
|
||||
[status-im2.contexts.chat.new-chat.styles :as style]))
|
||||
[status-im2.contexts.chat.new-chat.styles :as style]
|
||||
[quo2.theme :as quo.theme]))
|
||||
|
||||
(defn- no-contacts-view
|
||||
[]
|
||||
[{:keys [theme]}]
|
||||
[rn/view
|
||||
{:style (style/no-contacts)}
|
||||
[rn/image {:source (resources/get-themed-image :no-contacts-dark :no-contacts-light)}]
|
||||
[rn/image {:source (resources/get-themed-image :no-contacts theme)}]
|
||||
[quo/text
|
||||
{:weight :semi-bold
|
||||
:size :paragraph-1
|
||||
@@ -56,8 +57,8 @@
|
||||
:on-check on-toggle}}
|
||||
item])))
|
||||
|
||||
(defn view
|
||||
[{:keys [scroll-enabled on-scroll close]}]
|
||||
(defn- view-internal
|
||||
[{:keys [scroll-enabled on-scroll close theme]}]
|
||||
(let [contacts (rf/sub [:contacts/sorted-and-grouped-by-first-letter])
|
||||
selected-contacts-count (rf/sub [:selected-contacts-count])
|
||||
selected-contacts (rf/sub [:group/selected-contacts])
|
||||
@@ -77,19 +78,19 @@
|
||||
[quo/text
|
||||
{:weight :semi-bold
|
||||
:size :heading-1
|
||||
:style {:color (colors/theme-colors colors/neutral-100 colors/white)}}
|
||||
:style {:color (colors/theme-colors colors/neutral-100 colors/white theme)}}
|
||||
(i18n/label :t/new-chat)]
|
||||
(when (seq contacts)
|
||||
[quo/text
|
||||
{:size :paragraph-2
|
||||
:weight :regular
|
||||
:style {:margin-bottom 2
|
||||
:color (colors/theme-colors colors/neutral-40 colors/neutral-50)}}
|
||||
:color (colors/theme-colors colors/neutral-40 colors/neutral-50 theme)}}
|
||||
(i18n/label :t/selected-count-from-max
|
||||
{:selected selected-contacts-count
|
||||
:max constants/max-group-chat-participants})])]]
|
||||
(if (empty? contacts)
|
||||
[no-contacts-view]
|
||||
[no-contacts-view {:theme theme}]
|
||||
[gesture/section-list
|
||||
{:key-fn :title
|
||||
:sticky-section-headers-enabled false
|
||||
@@ -111,3 +112,5 @@
|
||||
(if one-contact-selected?
|
||||
(i18n/label :t/chat-with {:selected-user primary-name})
|
||||
(i18n/label :t/setup-group-chat))])]))
|
||||
|
||||
(def view (quo.theme/with-theme view-internal))
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
[utils.i18n :as i18n]
|
||||
[react-native.permissions :as permissions]
|
||||
[utils.re-frame :as rf]
|
||||
[status-im.utils.image-processing :as image-processing]
|
||||
[react-native.image-resizer :as image-resizer]
|
||||
[taoensso.timbre :as log]
|
||||
[react-native.core :as rn]))
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
uri
|
||||
(fn [width height]
|
||||
(let [resize? (> (max width height) maximum-image-size-px)]
|
||||
(image-processing/resize
|
||||
(image-resizer/resize
|
||||
uri
|
||||
(if resize? maximum-image-size-px width)
|
||||
(if resize? maximum-image-size-px height)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user