react-native-app-data-sharing
Version:
This React Native package facilitates seamless and secure data sharing between applications on the same device.
104 lines (95 loc) • 3.83 kB
text/typescript
// Modified from react-native-keychain (https://github.com/oblador/react-native-keychain)
import type {
AuthenticationPrompt,
BaseOptions,
GetOptions,
SetOptions,
} from './DataSharingTypes';
// Default authentication prompt options
export const AUTH_PROMPT_DEFAULTS: AuthenticationPrompt = {
title: 'Authenticate to retrieve secret',
};
/**
* Normalizes the service option for keychain functions.
*
* @param serviceOrOptions - Either a service string or an options object
* which includes service configuration.
* @returns A BaseOptions object with the service set to the provided string,
* or the original options object if it was provided.
* @deprecated Passing a service string is deprecated and will be removed in a future major release.
*/
export function normalizeServiceOption(
serviceOrOptions?: string | BaseOptions
): BaseOptions {
if (typeof serviceOrOptions === 'string') {
console.warn(
`You passed a service string as an argument to one of the react-native-keychain functions.
This way of passing service is deprecated and will be removed in a future major.
Please update your code to use { service: ${JSON.stringify(
serviceOrOptions
)} }`
);
return { service: serviceOrOptions };
}
return serviceOrOptions || {};
}
/**
* Normalizes the server option for keychain functions.
*
* @param serverOrOptions - Either a server string or an options object
* which includes server configuration.
* @returns A BaseOptions object with the server set to the provided string,
* or the original options object if it was provided.
* @deprecated Passing a server string is deprecated and will be removed in a future major release.
*/
export function normalizeServerOption(
serverOrOptions?: string | BaseOptions
): BaseOptions {
if (typeof serverOrOptions === 'string') {
console.warn(
`You passed a server string as an argument to one of the react-native-keychain functions.
This way of passing service is deprecated and will be removed in a future major.
Please update your code to use { service: ${JSON.stringify(
serverOrOptions
)} }`
);
return { server: serverOrOptions };
}
return serverOrOptions || {};
}
/**
* Normalizes the options for keychain functions.
*
* @param serviceOrOptions - Either a service string, a SetOptions object, or a GetOptions object.
* @returns A SetOptions object if the passed options are of type SetOptions,
* and a GetOptions object if the passed options are of type GetOptions.
* @deprecated Passing a service string or an options object with a string for the authenticationPrompt property is deprecated and will be removed in a future major release.
*/
export function normalizeOptions(
serviceOrOptions?: string | SetOptions | GetOptions
): SetOptions | GetOptions {
const options = {
authenticationPrompt: AUTH_PROMPT_DEFAULTS,
...normalizeServiceOption(serviceOrOptions),
};
const { authenticationPrompt } = options;
if (typeof authenticationPrompt === 'string') {
console.warn(
`You passed a authenticationPrompt string as an argument to one of the react-native-keychain functions.
This way of passing authenticationPrompt is deprecated and will be removed in a future major.
Please update your code to use { authenticationPrompt: { title: ${JSON.stringify(
authenticationPrompt
)} }`
);
options.authenticationPrompt = {
...AUTH_PROMPT_DEFAULTS,
title: authenticationPrompt,
};
} else {
options.authenticationPrompt = {
...AUTH_PROMPT_DEFAULTS,
...authenticationPrompt,
};
}
return options;
}