0.1.1 • Published 2 years ago

@yplabs-ltd/react-native-detector v0.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

@yplabs-ltd/react-native-detector

a simply and easy to use screenshot detector for react native.

Installation

yarn

yarn add @yplabs-ltd/react-native-detector

npm

npm install @yplabs-ltd/react-native-detector

iOS

cd ios && pod install

android

for Android you need to have access for READ_EXTERNAL_STORAGE to detect screenshots by user to do that you just need to add this line in AndroidManifest.xml

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

and get user permission

import { PermissionsAndroid } from 'react-native';

//...
const requestPermission = async () => {
  await PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE,
    {
      title: 'Get Read External Storage Access',
      message: 'get read external storage access for detecting screenshots',
      buttonNeutral: 'Ask Me Later',
      buttonNegative: 'Cancel',
      buttonPositive: 'OK',
    }
  );
};

Usage

import {
  addScreenshotListener,
  addScreenrecordListener,
} from '@yplabs-ltd/react-native-detector';

// ...
React.useEffect(() => {
  const userDidScreenshot = () => {
    console.log('User took screenshot');
  };
  const unsubscribe = addScreenshotListener(userDidScreenshot);
  return () => {
    unsubscribe();
  };
}, []);

Roadmap

StatusGoal
iOS version of screenshot detector
✅ (Thanks to @mhssn95)Android version of screenshot detector
IOS Screen recording detecting
Android Screen recording detecting
🚧Calls detector

Contributing

Based on the project react-native-detector to develop more. See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

qcomsqsrcwsajvartdelejsgothasinimemnanob1orapslretsaxtmpusevlqababasapasn1atobaws4basebserdepdetagexitfbjsflatglobjakejsbnkeyvklawlcidlevnmeowmimeonceopenpifypumppuparsvprxjssanesendtemptmpltr46urixuuidvaryy18nyamlacornasyncboxenbyteschalkcliuiclonecssomdargsdayjsdebugexecafastqfreshis-ciisexejsdomjsescjson5kleurlevenmetrop-mapp-tryplistretrysaxesslashslidesplitsshpktabletslibwhichwritexcodexpipextendyargsarrifybracesdedentespreeexpectextendfor-ingh-gotgit-upglobbygrowlyignoreis-npmis-objis-sshis-wsljsprimlodashmerge2mkdirpmorgannwsapiparse5pinkiepkg-upredentrimrafsemversplit2throatultronunpipeuri-jsverrorwalkerwrappyxmldocxmldomacceptschardetci-infoconnectcore-jscsstypedeep-isdestroyenvinfoesprimaesqueryesutilsexec-shextglobfiguresfind-upflattedgensyncgetpassglobalsis-globis-utf8isarrayjs-yamljsonifykind-ofmap-objmime-dbonetimeoptionsos-namep-deferp-limitpiratespkg-dirprivatepromisepromptsrechoirregexpprequestresolvereusifyrx-liteshelljsthroughtsutilswcwidthxregexpyallistansi-redanymatchargparsearr-diffasynckitbindingsbuiltinscaselesscssstyledashdashdefaultsdir-globdoctrinedot-propecc-jsbnee-firstencodingerror-exfilelistfs-extrafseventshas-flaghas-yarninflightinheritsinquirerip-regexis-regexisobjectisstreamjest-clijetifierjsonfilelevenarylogkittymake-dirmimic-fnminimistnice-tryp-locateparseurlpath-keyprogresspunycodereact-isread-pkgregjsgenstatusesthrough2to-regexurl-joinwordwrapxmlcharsacorn-jsxansi-cyanansi-grayansi-wraparr-unionarray-ifyarray-mapaws-sign2base64-jscallsitescamelcasecli-boxescli-widthcolorettecommandercommondirdata-urlsdeepmergedenodeifyduplexer3encodeurlescodegenesrecursefancy-logfast-difffast-globform-dataget-stdinget-valuehas-valueinterpretinvariantinvert-kvis-bufferis-dockeris-finiteis-numberis-streamis-stringis-symboljest-diffjest-eachjest-mockjest-utiljs-tokensjsonparselru-cachemakeerrormap-cachemap-visitminimatchnanomatchneo-asyncos-localeos-tmpdirp-finallyparse-urlpath-typepicomatchprotocolspseudomapquick-lruregex-notrepeatingrun-asyncschedulerset-valuestrip-bomstrip-eofterm-sizetweetnacltype-festuglify-esuglify-jsword-wrapwrap-ansiJSONStreamacorn-walkadd-streamansi-alignansi-regexbabel-jestbasic-authcache-basechar-regexcli-cursorcolor-nameconcat-mapdateformatdecamelizedecimal.jsdidyoumeanestraverseextsprintffill-rangeflat-cacheget-streamhandlebarshar-schemahas-valuesiconv-liteimage-sizeimport-cwdis-extglobis-windowsmetro-coremicromatchmime-typesmin-indentmixin-deepnegotiatornode-fetchnode-int64nullthrowsoauth-signon-headersoptionatorparse-jsonparse-pathpascalcasepath-parseprelude-lsprop-typesregeneratesafe-regexshellwordssisteransislice-ansisnapdragonsource-mapsprintf-jsstrip-ansitext-tabletime-stamptype-checktypedarraywhatwg-urlxmlbuilderansi-colorsansi-stylesarr-flattenarray-slicearray-unionassert-plusasync-retrybig-integerbuffer-fromcaller-pathclass-utilsclean-stackcompressionconfigstorecosmiconfigcross-spawndeep-extenddeprecationemoji-regexes-abstractescape-goatescape-htmlfb-watchmanfs.realpathglob-parentglobal-dirsgraceful-fshas-symbolshttp-errorsimport-fromimport-lazyimurmurhashis-arrayishis-callableis-path-cwdjest-configjest-runnerjest-workerjsc-androidjson-bufferjson-schemalocate-pathlodash.findlog-symbolsmetro-cachemute-streamobject-copyobject-keysobject.pickon-finishedpath-existsread-pkg-upregjsparserresolve-cwdresolve-pkgresolve-urlsafe-buffersemver-diffshell-quotesignal-exitstack-utilssudo-promptsymbol-treetype-detectunion-valueunset-valueutils-mergew3c-hr-timewidest-linewindow-sizexdg-basediransi-escapesarray-filterarray-reducearray-uniqueastral-regexbabel-eslintbcrypt-pbkdfbrowserslistbuffer-crc32caniuse-litecapture-exitcli-spinnerscompare-funccompressiblecore-js-purecore-util-isdomexceptionerrorhandlereslint-scopeeslint-utilsfbjs-scriptsfinalhandlerget-pkg-repohtml-escaperimport-freshimport-localis-directoryis-git-dirtyis-plain-objis-text-pathjest-resolvejest-runtimejest-watcherloose-envifymerge-streammetro-confignpm-run-pathobject-visitp-cancelablep-is-promisepackage-jsonplugin-errorprepend-fileprepend-httprange-parserregexpu-coreregistry-urlresolve-alpnresolve-fromresponselikerun-parallelsafer-buffersemver-regexserve-staticset-blockingsetimmediateside-channelsimple-plistspdx-correctsplit-stringstring-widthstrip-indenttest-excludetoidentifiertough-cookietunnel-agentua-parser-jsuniversalifywhatwg-fetchwhich-moduleyargs-parserabsolute-pathacorn-globalsasync-limiterat-least-nodebabel-runtimebplist-parsercode-point-atcolor-convertcolor-supportconcat-streamend-of-streameventemitter3fbjs-css-varsfind-versionsforever-agentfunction-bindgit-url-parsehar-validatorhermes-enginehttp2-wrapperhuman-signalsindent-stringinternal-slotis-descriptoris-extendableis-typedarrayjest-docblockjest-get-typejest-jasmine2jest-snapshotjest-validatejsx-ast-utilslodash.sortbymacos-releasemodify-valuesnode-notifiernode-releasesnormalize-urlnumber-is-nanobject-assignobject.assignobject.valuesp-each-seriesparent-modulepretty-formatreact-refreshrepeat-stringshebang-regexstatic-extendstring-lengthterminal-linktrim-newlinesunique-stringurl-parse-laxwhich-pm-runsansi-fragmentsarray-includesassign-symbolsbabel-polyfillbalanced-matchbplist-creatorcamelcase-keysclone-responsecommand-existscore-js-compatdelayed-streamdeprecated-objdetect-newlinediff-sequencesextend-shallowfind-cache-dirfragment-cachegitconfiglocalhard-rejectionhttp-signatureis-date-objectis-interactiveis-path-insideis-yarn-globaljest-haste-maplatest-versionload-json-filelodash.ismatchloud-rejectionlowercase-keysmetro-resolvermimic-responsenormalize-pathobject-inspectobject.entriespinkie-promiserepeat-elementresolve-globalrestore-cursorsemver-comparesetprototypeofsource-map-urlstream-buffersstring_decodersupports-colorto-object-pathto-regex-rangeutil-deprecatev8-to-istanbulaggregate-errorbrace-expansioncaller-callsitecombined-streamcopy-descriptordecamelize-keysdefine-propertyes-to-primitiveexpand-bracketsexternal-editorfast-deep-equalget-caller-filegit-raw-commitsgit-semver-tagsgithub-usernamehosted-git-infois-generator-fnis-plain-objectis-regular-filejest-regex-utiljest-serializerlodash.templatelodash.throttlemap-age-cleanernatural-compareperformance-nowreadable-streamserialize-errorshebang-commandsnapdragon-nodesnapdragon-utilspdx-exceptionstext-extensionsupdate-notifierwhatwg-encodingwhatwg-mimetypewindows-releaseabort-controllerarray-find-indexcacheable-lookupcollection-visitcompare-versionsdefer-to-connectfast-levenshteinfile-entry-cachefile-uri-to-pathget-package-typeisomorphic-fetchistanbul-reportsmetro-source-mapminimist-optionspath-is-absolutespdx-license-idsstealthy-requirev8-compile-cachebabel-preset-fbjsbabel-preset-jestbefore-after-hookcacheable-requestcomponent-emitterdefine-propertiesevent-target-shimis-git-repositoryjest-message-utiljest-pnp-resolverlines-and-columnsmetro-symbolicaterequire-directorystacktrace-parsersymbol-observabletrim-off-newlinesw3c-xmlserializerwrite-file-atomicconvert-source-mapcreate-react-classeslint-plugin-jestis-data-descriptorjest-changed-filesjest-leak-detectorjest-matcher-utilsobject.fromentriesparse-node-versionrx-lite-aggregatessource-map-resolvesource-map-supportto-fast-propertiesto-readable-streamwebidl-conversionsxml-name-validatorcollect-v8-coveragecurrently-unhandleddecompress-responseeslint-plugin-reacteslint-visitor-keysistanbul-lib-reportjson-stringify-safemetro-minify-uglifynode-modules-regexpplease-upgrade-nodereact-devtools-coreregenerator-runtimeregistry-auth-tokenstrip-final-newlinestrip-json-commentssupports-hyperlinkscrypto-random-stringdecode-uri-componentelectron-to-chromiumescape-string-regexphttp-cache-semanticsjson-schema-traversemetro-babel-registerprocess-nextick-argsrequest-promise-coretypedarray-to-bufferuniversal-user-agentbabel-plugin-istanbuldetect-repo-changeloggit-remote-origin-urlhtml-encoding-snifferis-installed-globallyistanbul-lib-coveragejest-environment-nodejson-stable-stringifylodash._reinterpolatemetro-inspector-proxyparse-github-repo-urlregenerator-transformrequire-main-filenamespdx-expression-parsebrowser-process-hrtimeconventional-changelogeslint-plugin-flowtypeis-accessor-descriptorjest-environment-jsdomnormalize-package-dataregexp.prototype.flagsrequest-promise-nativebabel-plugin-jest-hoistis-fullwidth-code-pointistanbul-lib-instrumentlodash.templatesettingsmetro-babel-transformerposix-character-classesprettier-linter-helperschangelog-filename-regexistanbul-lib-source-mapsjson-parse-better-errorsstring.prototype.trimendeslint-plugin-react-hooksfunctional-red-black-treejest-resolve-dependenciesremove-trailing-separatorstring.prototype.matchallstring.prototype.trimleftvalidate-npm-package-nameeslint-plugin-react-nativefast-json-stable-stringifyopencollective-postinstallstring.prototype.trimrightstring.prototype.trimstartconventional-changelog-atomconventional-changelog-coreconventional-commits-filterconventional-commits-parserconventional-changelog-embervalidate-npm-package-licenseconventional-changelog-eslintconventional-changelog-jqueryconventional-changelog-jshintconventional-changelog-writerconventional-recommended-bumpeslint-plugin-eslint-commentsregenerate-unicode-propertiesconventional-changelog-angularconventional-changelog-expressmetro-react-native-babel-presetbabel-plugin-dynamic-import-nodebabel-preset-current-node-syntaxis-potential-custom-element-nameconventional-changelog-codemirrorunicode-match-property-ecmascripteslint-plugin-react-native-globalsunicode-property-aliases-ecmascriptconventional-changelog-preset-loadermetro-react-native-babel-transformerjson-stable-stringify-without-jsonifyunicode-match-property-value-ecmascriptconventional-changelog-conventionalcommitsunicode-canonical-property-names-ecmascriptbabel-plugin-syntax-trailing-function-commas
0.1.1

2 years ago

0.1.0

2 years ago