yeet
This commit is contained in:
24
node_modules/react-native/Libraries/Share/NativeShareModule.js
generated
vendored
Normal file
24
node_modules/react-native/Libraries/Share/NativeShareModule.js
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @flow strict-local
|
||||
* @format
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
import type {TurboModule} from '../TurboModule/RCTExport';
|
||||
import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
|
||||
|
||||
export interface Spec extends TurboModule {
|
||||
+getConstants: () => {||};
|
||||
+share: (
|
||||
content: {|title?: string, message?: string|},
|
||||
dialogTitle?: string,
|
||||
) => Promise<{|action: string|}>;
|
||||
}
|
||||
|
||||
export default (TurboModuleRegistry.get<Spec>('ShareModule'): ?Spec);
|
163
node_modules/react-native/Libraries/Share/Share.js
generated
vendored
Normal file
163
node_modules/react-native/Libraries/Share/Share.js
generated
vendored
Normal file
@ -0,0 +1,163 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
* @flow
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
const Platform = require('../Utilities/Platform');
|
||||
|
||||
const invariant = require('invariant');
|
||||
const processColor = require('../StyleSheet/processColor');
|
||||
|
||||
import NativeActionSheetManager from '../ActionSheetIOS/NativeActionSheetManager';
|
||||
import NativeShareModule from './NativeShareModule';
|
||||
|
||||
type Content =
|
||||
| {
|
||||
title?: string,
|
||||
message: string,
|
||||
...
|
||||
}
|
||||
| {
|
||||
title?: string,
|
||||
url: string,
|
||||
...
|
||||
};
|
||||
type Options = {
|
||||
dialogTitle?: string,
|
||||
excludedActivityTypes?: Array<string>,
|
||||
tintColor?: string,
|
||||
subject?: string,
|
||||
...
|
||||
};
|
||||
|
||||
class Share {
|
||||
/**
|
||||
* Open a dialog to share text content.
|
||||
*
|
||||
* In iOS, Returns a Promise which will be invoked an object containing `action`, `activityType`.
|
||||
* If the user dismissed the dialog, the Promise will still be resolved with action being `Share.dismissedAction`
|
||||
* and all the other keys being undefined.
|
||||
*
|
||||
* In Android, Returns a Promise which always be resolved with action being `Share.sharedAction`.
|
||||
*
|
||||
* ### Content
|
||||
*
|
||||
* - `message` - a message to share
|
||||
*
|
||||
* #### iOS
|
||||
*
|
||||
* - `url` - an URL to share
|
||||
*
|
||||
* At least one of URL and message is required.
|
||||
*
|
||||
* #### Android
|
||||
*
|
||||
* - `title` - title of the message
|
||||
*
|
||||
* ### Options
|
||||
*
|
||||
* #### iOS
|
||||
*
|
||||
* - `subject` - a subject to share via email
|
||||
* - `excludedActivityTypes`
|
||||
* - `tintColor`
|
||||
*
|
||||
* #### Android
|
||||
*
|
||||
* - `dialogTitle`
|
||||
*
|
||||
*/
|
||||
static share(content: Content, options: Options = {}): Promise<Object> {
|
||||
invariant(
|
||||
typeof content === 'object' && content !== null,
|
||||
'Content to share must be a valid object',
|
||||
);
|
||||
invariant(
|
||||
typeof content.url === 'string' || typeof content.message === 'string',
|
||||
'At least one of URL and message is required',
|
||||
);
|
||||
invariant(
|
||||
typeof options === 'object' && options !== null,
|
||||
'Options must be a valid object',
|
||||
);
|
||||
|
||||
if (Platform.OS === 'android') {
|
||||
invariant(
|
||||
NativeShareModule,
|
||||
'ShareModule should be registered on Android.',
|
||||
);
|
||||
invariant(
|
||||
!content.title || typeof content.title === 'string',
|
||||
'Invalid title: title should be a string.',
|
||||
);
|
||||
|
||||
const newContent = {
|
||||
title: content.title,
|
||||
message:
|
||||
typeof content.message === 'string' ? content.message : undefined,
|
||||
};
|
||||
|
||||
return NativeShareModule.share(newContent, options.dialogTitle);
|
||||
} else if (Platform.OS === 'ios') {
|
||||
return new Promise((resolve, reject) => {
|
||||
const tintColor = processColor(options.tintColor);
|
||||
|
||||
invariant(
|
||||
tintColor == null || typeof tintColor === 'number',
|
||||
'Unexpected color given for options.tintColor',
|
||||
);
|
||||
|
||||
invariant(
|
||||
NativeActionSheetManager,
|
||||
'NativeActionSheetManager is not registered on iOS, but it should be.',
|
||||
);
|
||||
|
||||
NativeActionSheetManager.showShareActionSheetWithOptions(
|
||||
{
|
||||
message:
|
||||
typeof content.message === 'string' ? content.message : undefined,
|
||||
url: typeof content.url === 'string' ? content.url : undefined,
|
||||
subject: options.subject,
|
||||
tintColor: typeof tintColor === 'number' ? tintColor : undefined,
|
||||
excludedActivityTypes: options.excludedActivityTypes,
|
||||
},
|
||||
error => reject(error),
|
||||
(success, activityType) => {
|
||||
if (success) {
|
||||
resolve({
|
||||
action: 'sharedAction',
|
||||
activityType: activityType,
|
||||
});
|
||||
} else {
|
||||
resolve({
|
||||
action: 'dismissedAction',
|
||||
});
|
||||
}
|
||||
},
|
||||
);
|
||||
});
|
||||
} else {
|
||||
return Promise.reject(new Error('Unsupported platform'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The content was successfully shared.
|
||||
*/
|
||||
static sharedAction: 'sharedAction' = 'sharedAction';
|
||||
|
||||
/**
|
||||
* The dialog has been dismissed.
|
||||
* @platform ios
|
||||
*/
|
||||
static dismissedAction: 'dismissedAction' = 'dismissedAction';
|
||||
}
|
||||
|
||||
module.exports = Share;
|
Reference in New Issue
Block a user