Merge pull request #275 from tooot-app/main

Test sharing
This commit is contained in:
xmflsct 2022-05-05 01:16:07 +02:00 committed by GitHub
commit cb20d05ffe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 47 additions and 143 deletions

View File

@ -63,7 +63,7 @@ GEM
public_suffix (~> 4.0)
typhoeus (~> 1.0)
cocoapods-deintegrate (1.0.5)
cocoapods-downloader (1.6.2)
cocoapods-downloader (1.6.3)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.1)

View File

@ -17,7 +17,7 @@
<key>HostAppBundleIdentifier</key>
<string>com.xmflsct.app.tooot</string>
<key>HostAppURLScheme</key>
<string>tooot://</string>
<string>tooot-share://</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>

View File

@ -6,6 +6,8 @@
#import <React/RCTLinkingManager.h>
#import <React/RCTConvert.h>
#import <RNShareMenu/ShareMenuManager.h>
#if defined(FB_SONARKIT_ENABLED) && __has_include(<FlipperKit/FlipperClient.h>)
#import <FlipperKit/FlipperClient.h>
#import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h>
@ -81,6 +83,13 @@ static void InitializeFlipper(UIApplication *application) {
// Linking API
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
NSString *urlString = url.absoluteString;
if ([urlString hasPrefix:@"tooot-share://"]) {
NSLog(@"Entered with the following string: %@s", urlString);
return [ShareMenuManager application:application openURL:url options:options];
}
return [RCTLinkingManager application:application openURL:url options:options];
}

View File

@ -31,6 +31,7 @@
<string>com.xmflsct.app.tooot</string>
<key>CFBundleURLSchemes</key>
<array>
<string>tooot-share</string>
<string>tooot</string>
</array>
</dict>

View File

@ -75,7 +75,6 @@
"react-native-fast-image": "8.5.11",
"react-native-feather": "1.1.2",
"react-native-flash-message": "0.2.1",
"react-native-fs": "^2.19.0",
"react-native-gesture-handler": "2.4.1",
"react-native-htmlview": "0.16.0",
"react-native-pager-view": "5.4.11",
@ -86,7 +85,6 @@
"react-native-svg": "12.3.0",
"react-native-swipe-list-view": "3.2.9",
"react-native-tab-view": "3.1.1",
"react-native-uuid": "^2.0.1",
"react-query": "3.38.0",
"react-redux": "8.0.1",
"react-timeago": "6.2.1",

View File

@ -1,20 +1,19 @@
diff --git a/node_modules/@types/react-native-share-menu/index.d.ts b/node_modules/@types/react-native-share-menu/index.d.ts
index f52822c..23d9f99 100755
index f52822c..b1d3bdd 100755
--- a/node_modules/@types/react-native-share-menu/index.d.ts
+++ b/node_modules/@types/react-native-share-menu/index.d.ts
@@ -6,9 +6,8 @@
@@ -6,9 +6,7 @@
// Minimum TypeScript Version: 3.7
export interface ShareData {
- mimeType: string;
- data: string | string[];
- extraData?: object | undefined;
+ data: {data: {mimeType: string; data: string}[]};
+ extraData?: {share: {mimeType: string; data: string}[]} | undefined;
+ data: {mimeType: string; data: string}[];
}
export type ShareCallback = (share?: ShareData) => void;
@@ -28,7 +27,7 @@ interface ShareMenuReactView {
@@ -28,7 +26,7 @@ interface ShareMenuReactView {
dismissExtension(error?: string): void;
openApp(): void;
continueInApp(extraData?: object): void;

View File

@ -1,5 +1,5 @@
diff --git a/node_modules/react-native-share-menu/ios/Constants.swift b/node_modules/react-native-share-menu/ios/Constants.swift
index 2811008..63761c3 100644
index 2811008..08385b7 100644
--- a/node_modules/react-native-share-menu/ios/Constants.swift
+++ b/node_modules/react-native-share-menu/ios/Constants.swift
@@ -23,7 +23,7 @@ public let COULD_NOT_PARSE_IMG_ERROR = "Couldn't parse image"
@ -12,7 +12,7 @@ index 2811008..63761c3 100644
// MARK: Keys
diff --git a/node_modules/react-native-share-menu/ios/Modules/ShareMenu.swift b/node_modules/react-native-share-menu/ios/Modules/ShareMenu.swift
index 6c4922a..1277df2 100644
index 6c4922a..74badda 100644
--- a/node_modules/react-native-share-menu/ios/Modules/ShareMenu.swift
+++ b/node_modules/react-native-share-menu/ios/Modules/ShareMenu.swift
@@ -9,7 +9,7 @@ class ShareMenu: RCTEventEmitter {
@ -65,7 +65,7 @@ index 6c4922a..1277df2 100644
finalData[EXTRA_DATA_KEY] = extraData
}
diff --git a/node_modules/react-native-share-menu/ios/Modules/ShareMenuReactView.swift b/node_modules/react-native-share-menu/ios/Modules/ShareMenuReactView.swift
index 5d21773..d8a0847 100644
index 5d21773..0c7eaa7 100644
--- a/node_modules/react-native-share-menu/ios/Modules/ShareMenuReactView.swift
+++ b/node_modules/react-native-share-menu/ios/Modules/ShareMenuReactView.swift
@@ -3,8 +3,9 @@
@ -79,7 +79,16 @@ index 5d21773..d8a0847 100644
import MobileCoreServices
@objc(ShareMenuReactView)
@@ -65,12 +66,12 @@ public class ShareMenuReactView: NSObject {
@@ -17,8 +18,6 @@ public class ShareMenuReactView: NSObject {
}
public static func attachViewDelegate(_ delegate: ReactShareViewDelegate!) {
- guard (ShareMenuReactView.viewDelegate == nil) else { return }
-
ShareMenuReactView.viewDelegate = delegate
}
@@ -65,12 +64,12 @@ public class ShareMenuReactView: NSObject {
let extensionContext = viewDelegate.loadExtensionContext()
@ -95,7 +104,7 @@ index 5d21773..d8a0847 100644
}
@objc(data:reject:)
@@ -82,91 +83,96 @@ public class ShareMenuReactView: NSObject {
@@ -82,91 +81,96 @@ public class ShareMenuReactView: NSObject {
return
}
@ -257,7 +266,7 @@ index 5d21773..d8a0847 100644
}
diff --git a/node_modules/react-native-share-menu/ios/ReactShareViewController.swift b/node_modules/react-native-share-menu/ios/ReactShareViewController.swift
index 0189ef6..e620257 100644
index 0189ef6..f42bce6 100644
--- a/node_modules/react-native-share-menu/ios/ReactShareViewController.swift
+++ b/node_modules/react-native-share-menu/ios/ReactShareViewController.swift
@@ -62,7 +62,7 @@ class ReactShareViewController: ShareViewController, RCTBridgeDelegate, ReactSha
@ -270,9 +279,8 @@ index 0189ef6..e620257 100644
+ handlePost(items, extraData: extraData)
}
}
\ No newline at end of file
diff --git a/node_modules/react-native-share-menu/ios/ReactShareViewDelegate.swift b/node_modules/react-native-share-menu/ios/ReactShareViewDelegate.swift
index 0aa4c58..d2bc970 100644
index 0aa4c58..ad0812c 100644
--- a/node_modules/react-native-share-menu/ios/ReactShareViewDelegate.swift
+++ b/node_modules/react-native-share-menu/ios/ReactShareViewDelegate.swift
@@ -10,5 +10,5 @@ public protocol ReactShareViewDelegate {
@ -282,9 +290,8 @@ index 0aa4c58..d2bc970 100644
- func continueInApp(with item: NSExtensionItem, and extraData: [String:Any]?)
+ func continueInApp(with items: [NSExtensionItem], and extraData: [String:Any]?)
}
\ No newline at end of file
diff --git a/node_modules/react-native-share-menu/ios/ShareViewController.swift b/node_modules/react-native-share-menu/ios/ShareViewController.swift
index 7faf6e4..81aef73 100644
index 7faf6e4..12d8c92 100644
--- a/node_modules/react-native-share-menu/ios/ShareViewController.swift
+++ b/node_modules/react-native-share-menu/ios/ShareViewController.swift
@@ -6,7 +6,9 @@

View File

@ -161,25 +161,18 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
// Share Extension
const handleShare = useCallback(
(item?: {
extraData?: { share: { mimeType: string; data: string }[] }
}) => {
(item?: { data?: { mimeType: string; data: string }[] }) => {
if (instanceActive < 0) {
return
}
if (
!item ||
!item.extraData ||
!Array.isArray(item.extraData.share) ||
!item.extraData.share.length
) {
if (!item || !item.data || !Array.isArray(item.data) || !item.data) {
return
}
let text: string | undefined = undefined
let images: { type: string; uri: string }[] = []
let video: { type: string; uri: string } | undefined = undefined
item.extraData.share.forEach((d, i) => {
item.data.forEach((d, i) => {
const typesImage = ['png', 'jpg', 'jpeg', 'gif']
const typesVideo = ['mp4', 'm4v', 'mov', 'webm']
const { mimeType, data } = d
@ -219,12 +212,10 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
[instanceActive]
)
useEffect(() => {
console.log('getting intial share')
ShareMenu.getInitialShare(handleShare)
ShareMenu.getInitialShare(item => handleShare(item))
}, [])
useEffect(() => {
console.log('getting just share')
const listener = ShareMenu.addNewShareListener(handleShare)
const listener = ShareMenu.addNewShareListener(item => handleShare(item))
return () => {
listener.remove()
}

View File

@ -1,9 +1,7 @@
import { useEffect, useState } from 'react'
import { Appearance, Platform, Pressable, Text } from 'react-native'
import { useEffect } from 'react'
import { Appearance, Pressable } from 'react-native'
import { Circle } from 'react-native-animated-spinkit'
import RNFS from 'react-native-fs'
import { ShareMenuReactView } from 'react-native-share-menu'
import uuid from 'react-native-uuid'
// mimeType
// text/plain - text only, website URL, video?!
@ -21,58 +19,9 @@ const colors = {
}
}
const clearDir = async (dir: string) => {
try {
const files = await RNFS.readDir(dir)
for (const file of files) {
await RNFS.unlink(file.path)
}
} catch (err: any) {
console.warn(err.message)
}
}
const ShareExtension = () => {
const [errorMessage, setErrorMessage] = useState<string>()
useEffect(() => {
ShareMenuReactView.data().then(async ({ data }) => {
console.log('length', data.length)
const newData = []
switch (Platform.OS) {
case 'ios':
for (const d of data) {
if (d.data.startsWith('file:///')) {
const extension = d.data.split('.').pop()?.toLowerCase()
const filename = `${uuid.v4()}.${extension}`
const groupDirectory = await RNFS.pathForGroup(
'group.com.xmflsct.app.tooot'
)
await clearDir(groupDirectory)
const newFilepath = `file://${groupDirectory}/${filename}`
console.log('newFilepath', newFilepath)
try {
await RNFS.copyFile(d.data, newFilepath)
newData.push({ ...d, data: newFilepath })
} catch (err: any) {
setErrorMessage(err.message)
console.warn(err.message)
}
} else {
newData.push(d)
}
}
break
case 'android':
break
default:
return
}
console.log('new data', newData)
if (!errorMessage) {
ShareMenuReactView.continueInApp({ share: newData })
}
})
ShareMenuReactView.continueInApp()
}, [])
const theme = Appearance.getColorScheme() || 'light'
@ -85,19 +34,8 @@ const ShareExtension = () => {
alignItems: 'center',
backgroundColor: colors.background[theme]
}}
onPress={() => {
if (errorMessage) {
ShareMenuReactView.dismissExtension(errorMessage)
}
}}
>
{!errorMessage ? (
<Text style={{ fontSize: 16, color: colors.primary[theme] }}>
{errorMessage}
</Text>
) : (
<Circle size={18} color={colors.primary[theme]} />
)}
<Circle size={18} color={colors.primary[theme]} />
</Pressable>
)
}

View File

@ -2425,9 +2425,9 @@ async-limiter@~1.0.0:
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
async@^2.4.0:
version "2.6.3"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
version "2.6.4"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221"
integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
dependencies:
lodash "^4.17.14"
@ -2576,11 +2576,6 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
base-64@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb"
integrity sha1-eAqZyE59YAJgNhURxId2E78k9rs=
base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.0, base64-js@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
@ -2621,13 +2616,6 @@ bplist-creator@0.1.0:
dependencies:
stream-buffers "2.2.x"
bplist-parser@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.0.tgz#ba50666370f61bbf94881636cd9f7d23c5286090"
integrity sha512-zgmaRvT6AN1JpPPV+S0a1/FAtoxSreYDccZGIqEMSvZl9DMe70mJ7MFzpxa1X+gHVdkToE2haRUHHMiW1OdejA==
dependencies:
big-integer "1.6.x"
bplist-parser@0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.1.tgz#e1c90b2ca2a9f9474cc72f6862bbf3fee8341fd1"
@ -6057,7 +6045,7 @@ pkg-up@^3.1.0:
dependencies:
find-up "^3.0.0"
plist@^3.0.2, plist@^3.0.4, plist@^3.0.5:
plist@^3.0.2, plist@^3.0.5:
version "3.0.5"
resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.5.tgz#2cbeb52d10e3cdccccf0c11a63a85d830970a987"
integrity sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==
@ -6302,14 +6290,6 @@ react-native-flash-message@0.2.1:
prop-types "^15.8.1"
react-native-iphone-x-helper "^1.3.1"
react-native-fs@^2.19.0:
version "2.19.0"
resolved "https://registry.yarnpkg.com/react-native-fs/-/react-native-fs-2.19.0.tgz#5747eb52a5a3d2b31c8fb76f5f8044d0a855122c"
integrity sha512-Yl09IbETkV5UJcBtVtBLttyTmiAhJIHpGA/LvredI5dYiw3MXMMVu42bzELiuH2Bwj7F+qd0fMNvgfBDiDxd2A==
dependencies:
base-64 "^0.1.0"
utf8 "^3.0.0"
react-native-gesture-handler@2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.4.1.tgz#f4cb1784b6dcdf41ae35b4fff6022ec21038e2cd"
@ -6388,11 +6368,6 @@ react-native-tab-view@3.1.1:
resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-3.1.1.tgz#1f8d7a835ab4f5b1b1407ec8dddc1053b53fa3c6"
integrity sha512-M5pRN6utQfytKWoKlKVzg5NbkYu308qNoW1khGTtEOTs1k14p2dHJ/BWOJoJYHKbPVUyZldbG9MFT7gUl4YHnw==
react-native-uuid@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/react-native-uuid/-/react-native-uuid-2.0.1.tgz#ed4e2dfb1683eddb66967eb5dca140dfe1abddb9"
integrity sha512-cptnoIbL53GTCrWlb/+jrDC6tvb7ypIyzbXNJcpR3Vab0mkeaaVd5qnB3f0whXYzS+SMoSQLcUUB0gEWqkPC0g==
react-native@0.67.4:
version "0.67.4"
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.67.4.tgz#57a1503daa81f66a61f521ff67b259f126d87f9c"
@ -6934,7 +6909,7 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
simple-plist@^1.0.0:
simple-plist@^1.0.0, simple-plist@^1.1.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.3.1.tgz#16e1d8f62c6c9b691b8383127663d834112fb017"
integrity sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==
@ -6943,15 +6918,6 @@ simple-plist@^1.0.0:
bplist-parser "0.3.1"
plist "^3.0.5"
simple-plist@^1.1.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.3.0.tgz#f451997663eafd8ea6bad353a01caf49ef186d43"
integrity sha512-uYWpeGFtZtVt2NhG4AHgpwx323zxD85x42heMJBan1qAiqqozIlaGrwrEt6kRjXWRWIXsuV1VLCvVmZan2B5dg==
dependencies:
bplist-creator "0.1.0"
bplist-parser "0.3.0"
plist "^3.0.4"
simple-swizzle@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
@ -7550,11 +7516,6 @@ use@^3.1.0:
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
utf8@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1"
integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==
util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"