一些检查失败了
automerge / automerge (push) Has been cancelled
react-native-android-build-apk / AssembleRelease (push) Has been cancelled
Build macOS M1 / Main (push) Has been cancelled
Joplin Continuous Integration / Main (macos-15-intel) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-11-vs2026-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-2025) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04-arm) (push) Has been cancelled
Joplin UI tests / Main (ubuntu-22.04) (push) Has been cancelled
Joplin UI tests / Main (windows-2025) (push) Has been cancelled
Joplin UI tests / Mobile (push) Has been cancelled
Close stale issues / ProcessStaleIssues (push) Has been cancelled
42 行
1.2 KiB
TypeScript
42 行
1.2 KiB
TypeScript
import { NativeEventEmitter } from 'react-native';
|
|
import { NativeModules, Platform } from 'react-native';
|
|
|
|
export interface SharedData {
|
|
title?: string;
|
|
text?: string;
|
|
resources?: string[];
|
|
}
|
|
|
|
type ShareListener = (event: SharedData)=> void;
|
|
export type UnsubscribeShareListener = ()=> void;
|
|
type ShareExtensionType = {
|
|
data: ()=> Promise<SharedData>;
|
|
close: ()=> void;
|
|
shareURL: ()=> string;
|
|
addShareListener: (listener: ShareListener)=> UnsubscribeShareListener|undefined;
|
|
};
|
|
|
|
|
|
let eventEmitter: NativeEventEmitter | undefined;
|
|
|
|
const ShareExtension: ShareExtensionType = (NativeModules.ShareExtension) ?
|
|
{
|
|
data: () => NativeModules.ShareExtension.data(),
|
|
close: () => NativeModules.ShareExtension.close(),
|
|
shareURL: (Platform.OS === 'ios') ? NativeModules.ShareExtension.getConstants().SHARE_EXTENSION_SHARE_URL : '',
|
|
addShareListener: (Platform.OS === 'android') ? ((handler) => {
|
|
if (!eventEmitter) {
|
|
eventEmitter = new NativeEventEmitter(NativeModules.ShareExtension);
|
|
}
|
|
return eventEmitter.addListener('new_share_intent', handler).remove;
|
|
}) : (() => undefined),
|
|
} :
|
|
{
|
|
data: () => {},
|
|
close: () => {},
|
|
shareURL: '',
|
|
addShareListener: () => undefined,
|
|
};
|
|
|
|
export default ShareExtension;
|