clipboard.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. interface ClipboardModuleType {
  2. setStringAsync?: (text: string) => Promise<boolean | void>;
  3. setString?: (text: string) => void;
  4. }
  5. let ClipboardModule: ClipboardModuleType | null = null;
  6. try {
  7. // eslint-disable-next-line @typescript-eslint/no-require-imports
  8. ClipboardModule = require("@react-native-clipboard/clipboard").default;
  9. } catch {
  10. try {
  11. // eslint-disable-next-line @typescript-eslint/no-require-imports
  12. ClipboardModule = require("expo-clipboard");
  13. } catch {
  14. ClipboardModule = null;
  15. }
  16. }
  17. export const setStringToClipboard = async (text: string): Promise<boolean> => {
  18. if (!ClipboardModule) {
  19. return false;
  20. }
  21. try {
  22. if (ClipboardModule.setStringAsync) {
  23. await ClipboardModule.setStringAsync(text);
  24. return true;
  25. }
  26. if (ClipboardModule.setString) {
  27. ClipboardModule.setString(text);
  28. return true;
  29. }
  30. return false;
  31. } catch {
  32. return false;
  33. }
  34. };