Compare commits

...

331 Commits

Author SHA1 Message Date
Ibby Hadeed
41dae53bf2 chore(): update changelog 2017-06-01 14:23:32 -04:00
Ibby Hadeed
3027b5ea16 3.11.0 2017-06-01 14:23:27 -04:00
Ibby Hadeed
ec773de686 chore(): rename org 2017-06-01 14:03:56 -04:00
Daniel Sogl
f3b7467ffd docs(google-plus): renamed Web to Browser (#1635) 2017-06-01 13:08:53 -04:00
Niklas Häusele
d9546f15ed docs(): fix typo (#1632) 2017-06-01 13:06:07 -04:00
Daniel Sogl
52dcd808b6 refactor(docs): read the description (#1631)
* refactor(docs): read the description

- Added missing platforms
- Unified GitHub links
- Added missing installVariables

* Update index.ts

* Update index.ts

* Update index.ts

* Update index.ts
2017-06-01 13:05:47 -04:00
Raman Rasliuk
985193bebd fix(document-viewer): fix param type (#1634)
Options for  viewDocument should be an DocumentViewerOptions object, not array of DocumentViewerOptions objects
2017-06-01 13:05:20 -04:00
Daniel Sogl
9bf9e9d073 typo(package): added fields (#1633) 2017-06-01 13:01:42 -04:00
Daniel Sogl
8b9995a5af fix(secure-storage): add missing function (#1626)
* fix(secure-storage): add missing function

fix #1625

* Update index.ts
2017-05-31 21:03:46 -04:00
Daniel Sogl
2d3add6507 feat(plugin): add FTP plugin (#1627) 2017-05-31 21:03:07 -04:00
Daniel Sogl
ee59b55c29 docs(template): optimize template (#1628)
* Update wrap-min.tmpl

* Update wrap.tmpl
2017-05-31 21:01:37 -04:00
mhartington
28bb6dc1a8 docs(github): rename driftyco references to ionic-team 2017-05-30 11:01:13 -04:00
Nico
b587a0e647 docs(dialogs): confirm() can return a promise that resolves to 0 (#1617)
Document the fact that confirm() will return a promise that resolves to 0 if the user clicks outside the dialog box. This behavior was previously undocummented and could lead to issues if not handled properly.
2017-05-28 14:59:51 -04:00
Daniel Sogl
d9d7919174 chore(package): bump dependencies (#1611)
* chore(package): bump dependencies

I updated the dependencies to the latest bugfix and feature releases without any breaking changes.

* Update package.json

* Update package.json
2017-05-28 04:11:57 -04:00
Daniel Sogl
11c42757d7 docs(): rename OS X to macOS (#1614) 2017-05-28 04:01:27 -04:00
Daniel Sogl
4e4216ff6d docs(file): rename OS X to macOS (#1613) 2017-05-28 04:00:52 -04:00
Daniel Sogl
496968b9fc docs(device): rename OSX to macOS (#1612) 2017-05-28 04:00:18 -04:00
Jan Piotrowski
bf3f9d8799 refactor(core): fix "Install the plugin" command when not installed (#1606)
ionic plugin add ... => ionic cordova plugin add ...
2017-05-25 13:05:59 -04:00
Daniel Sogl
6f22134851 chore(package): bump zone.js and TS version (#1598)
* chore(package) bump zone.js version

* Update package.json
2017-05-25 13:05:29 -04:00
fabiodursoexin
aaeabb9f96 fix(flurry-analytics): fix original class reference (#1597)
fix: FlurryAnalaytics to FlurryAnalytics
2017-05-23 11:01:23 -04:00
Perry Govier
6d4da1fff4 Merge pull request #1465 from piotrowski/improved-plugin-docs
docs(template): Improved plugin docs
2017-05-22 10:03:25 -05:00
Ibby Hadeed
c0fd19fd33 chore(): update changelog 2017-05-20 06:26:59 -04:00
Ibby Hadeed
f2c4f380f8 3.10.2 2017-05-20 06:26:54 -04:00
Daniel Sogl
c96ae3db0d docs(nativegeocoder): out of beta (#1482)
Out of beta since a while
2017-05-20 06:25:45 -04:00
jasonmamy
c2a6198576 refactor(wheel-selector): added display key to override default values, added more docs (#1590) 2017-05-20 06:25:34 -04:00
Ibby Hadeed
2b3d4c9090 docs(): update install commands 2017-05-20 06:25:06 -04:00
Ibby Hadeed
dbb17d801e Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-20 06:23:38 -04:00
Jonathan Alexander
0b1e4e6e84 docs(): update install command (#1592)
The install text is missing cordova so it won't install just by copying and pasting in a terminal.
2017-05-20 06:23:15 -04:00
Ibby Hadeed
8c82c87811 chore(): update changelog 2017-05-20 05:21:46 -04:00
Ibby Hadeed
9997caf506 3.10.1 2017-05-20 05:21:31 -04:00
Ibby Hadeed
c8f53d2dc3 feat(core): add getSupportedPlatforms method 2017-05-20 05:21:27 -04:00
Ibby Hadeed
a10d763a41 docs(linkedin): update repo and install command 2017-05-19 09:48:00 -04:00
Ibby Hadeed
e44fdb6730 chore(): update changelog 2017-05-19 09:44:02 -04:00
Ibby Hadeed
bb8973a0ea 3.10.0 2017-05-19 09:43:51 -04:00
Ibby Hadeed
6031a240a2 feat(native-keyboard): add native keyboard plugin (#1588)
* add native keyboard plugin

* feat(native-keyboard): add native keyboard plugin
2017-05-19 09:37:56 -04:00
Ibby Hadeed
2bd244a536 fix(admob-free): use otherPromise to fix browser development 2017-05-19 09:24:19 -04:00
Ibby Hadeed
64bff1bbed docs(): add notice about plugin taking share of earnings 2017-05-19 07:59:06 -04:00
Ibby Hadeed
da5266cd65 docs(admob-free): improve docs 2017-05-19 07:44:47 -04:00
Ibby Hadeed
c1082b1c14 fix command since I cant change permissions 2017-05-19 06:52:49 -04:00
Ibby Hadeed
2cf132ee88 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-19 06:46:03 -04:00
Ibby Hadeed
e411146e8f docs(): refactor 2017-05-19 06:38:02 -04:00
Ibby Hadeed
5f63493bdc refactor(): use const instead of var 2017-05-19 06:37:28 -04:00
Daniel Sogl
999c288b23 docs(Speech Recognition): out of beta (#1483) 2017-05-19 06:36:29 -04:00
seshachalamyv
2e83ade978 docs(): fix method name in example (#1585)
data.wasPressed
should be change as data.wasTapped
2017-05-19 06:36:04 -04:00
Ibby Hadeed
08bf57f488 chore(): config github before running ci-tests 2017-05-19 06:35:01 -04:00
Hélder Diniz
6f6392ea5c feat(user-agent): add User-Agent plugin (#1582)
* feat(user-agent): add User-Agent plugin

* feat(user-agent): Few changes upon request
2017-05-19 06:31:31 -04:00
Ibby Hadeed
0b2227d35a Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-19 00:35:10 -04:00
Ibby Hadeed
4bfceadb65 refactor(tts): rename the speak method param 2017-05-19 00:35:06 -04:00
seshachalamyv
61c73eaa4e docs(): fix package name in import statement (#1581)
import { FCM } from 'ionic-native'; Corrected as import { FCM } from '@ionic-native/fcm';
2017-05-18 23:39:31 -04:00
Matias Solis de la Torre
c0c0c5cec5 docs(): update install command (#1584) 2017-05-18 23:38:58 -04:00
Ibby Hadeed
5b82d82d75 Update index.ts 2017-05-17 16:33:52 -04:00
mhartington
36be795623 docs(file): set filesaver class to hidden 2017-05-17 15:14:25 -04:00
mhartington
0996264483 docs(file): set classes to hidden
Set classes to hidden to prevent doc generation
2017-05-17 15:00:00 -04:00
Ibby Hadeed
2245bb8050 chore(): update changelog 2017-05-17 11:19:57 -04:00
Ibby Hadeed
e14e00edba 3.9.2 2017-05-17 11:19:55 -04:00
Ibby Hadeed
22102a7e4a fix(core): decorators should define enumerable properties 2017-05-17 11:19:35 -04:00
Ibby Hadeed
6416c2544c fix(action-sheet): destructiveButtonLast is optional 2017-05-17 11:07:34 -04:00
Ibby Hadeed
73a510f9c2 refactor(): remove unused import 2017-05-17 10:54:58 -04:00
Ibby Hadeed
b8b605db5e chore(): update changelog 2017-05-17 10:54:25 -04:00
Ibby Hadeed
12168d991a 3.9.1 2017-05-17 10:54:22 -04:00
Ibby Hadeed
93a119bf4b fix(core): fix issues when clearing observables 2017-05-17 10:54:09 -04:00
Ibby Hadeed
a7c62de389 refactor(core): otherPromise in wrapInstance shouldn't check for error 2017-05-17 10:47:39 -04:00
Ibby Hadeed
8aca6718e1 refactor(core): wrapInstance should return promise as-is
instance based method never throw errors like regular ones do
2017-05-17 10:46:47 -04:00
Ibby Hadeed
1ec4bdef8f docs(): update interface names 2017-05-17 10:36:05 -04:00
Ibby Hadeed
d6ed87d7cc fix merge conflict 2017-05-17 08:12:36 -04:00
Ibby Hadeed
55f3f37760 chore(): update changelog 2017-05-17 08:10:34 -04:00
Ibby Hadeed
4f547dae30 3.9.0 2017-05-17 08:10:31 -04:00
Ibby Hadeed
3cb83831c1 fix(app-preferences): suite is sync
closes #1321
2017-05-17 07:53:20 -04:00
Ibby Hadeed
ca7659378f fix(push): fix types
closes #1331
2017-05-17 07:51:19 -04:00
Ibby Hadeed
4333bc950d refactor(media): 2017-05-17 07:34:54 -04:00
Ibby Hadeed
ee4b61e405 fix(media): create will always return MediaObject even if plugin doesnt exist 2017-05-17 07:33:25 -04:00
Ibby Hadeed
975a65d619 fix(in-app-browser): fix on method
closes #1446
2017-05-17 07:27:51 -04:00
Ibby Hadeed
d68618f878 fix(media): create should return null if plugin is not available 2017-05-17 07:21:42 -04:00
Ibby Hadeed
e5aff0f5f0 Add TODO for 4.x 2017-05-17 07:13:04 -04:00
Ibby Hadeed
e596825ee9 docs(): update 2017-05-17 07:12:08 -04:00
Ibby Hadeed
991f2f04d4 feat(printer): add check method 2017-05-17 07:09:23 -04:00
Ibby Hadeed
ecdff8c0e5 docs(): add return type for pick 2017-05-17 07:03:27 -04:00
Ibby Hadeed
55071c0d65 fix(printer): fix implementation and add pick method 2017-05-17 07:03:07 -04:00
Ibby Hadeed
7d63e808ad docs(): fix repo link 2017-05-17 06:57:53 -04:00
Ibby Hadeed
84551cac67 docs(): fix docs 2017-05-17 06:53:13 -04:00
Ibby Hadeed
92ef4f0c33 fix(background-mode): configure doesn't return anything
closes #1457
2017-05-17 06:51:43 -04:00
Ibby Hadeed
d8eb621da4 docs(): fix param type 2017-05-17 06:50:43 -04:00
Ibby Hadeed
6534283a6f docs(): fix param type 2017-05-17 06:50:10 -04:00
Ibby Hadeed
f223481307 Merge branch 'master' into improved-plugin-docs 2017-05-17 06:48:46 -04:00
Daniel Sogl
5145395dd7 docs(template): fix install command (#1572) 2017-05-17 06:47:35 -04:00
Ibby Hadeed
dfd0514a43 refactor(): optimize code 2017-05-17 06:47:20 -04:00
Elias Boukamza
d5919d1736 fix(secure-storage): reject the promise if the plugin doesn't exist (#1562) 2017-05-17 06:45:54 -04:00
Ibby Hadeed
71f7051997 docs(): fix typo 2017-05-17 06:45:22 -04:00
Ibby Hadeed
2858b4bad7 remove support option 2017-05-17 06:39:08 -04:00
Ibby Hadeed
4c8deb2bed feat(linkedin): add getActiveSession method
closes #1570
2017-05-17 06:36:04 -04:00
Ibby Hadeed
277b2b15e6 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-17 06:32:49 -04:00
Ibby Hadeed
ebf402864b fix(android-permissions): fix PERMISSION property and add requestPermission
closes #1574
2017-05-17 06:32:27 -04:00
David Routhieau
6b702973ec docs(): update plugin install source (#1573) 2017-05-17 05:33:01 -04:00
Jan Piotrowski
7d4e8acce8 Remove --save
`ionic cordova plugin add` always adds `--save` to the Cordova call anyway
2017-05-17 11:31:41 +02:00
Ibby Hadeed
31983d8317 chore(): update changelog 2017-05-16 05:53:31 -04:00
Ibby Hadeed
8c842b00b6 3.8.1 2017-05-16 05:53:15 -04:00
Ibby Hadeed
c6feaafcca tslint 2017-05-16 05:49:09 -04:00
Ibby Hadeed
a7f7b26a76 reafactor(): amend last commit 2017-05-16 05:44:50 -04:00
Ibby Hadeed
d0dec7a17d fix(file): various fixes
closes #1564
2017-05-16 05:44:01 -04:00
Ibby Hadeed
7487293d33 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-16 05:31:42 -04:00
Ibby Hadeed
4f6ec0cfcd test(): update tests 2017-05-16 05:31:35 -04:00
Daniel Sogl
b35417a017 fix(document-viewer): fix params and docs for canViewDocument (#1568)
* refactor(document-viewer): fix example

* Update index.ts

* Update index.ts
2017-05-16 04:32:31 -04:00
David Routhieau
adf9c5a323 fix(file): fix repo link (#1566) 2017-05-16 00:38:39 -04:00
Raman Rasliuk
7c797123f5 fix(file): add toInternalURL (#1561)
* Put back toInternalURL

What was the reason to remove `toInternalURL` from `Entry`?
Fixes #1560

* Remove trailing whitespace
2017-05-15 04:55:06 -04:00
Daniel Sogl
bd1794d7f5 github(template): issue template (#1559)
* github(tempalte): issue template

* Update ISSUE_TEMPLATE.md
2017-05-15 03:23:54 -04:00
Daniel Sogl
46502cb864 docs(ionic-site): CLI V3 command (#1556) 2017-05-14 05:30:34 -04:00
Ibby Hadeed
02cc615c21 ci-tests fixes 2017-05-14 03:26:11 -04:00
Ibby Hadeed
749fd8af43 tests(): add basic tests (#1555) 2017-05-14 03:25:33 -04:00
Ibby Hadeed
e2acde5332 chore(): test plugin changes when PR is submitted (#1554)
* ci tests

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update
2017-05-14 03:19:48 -04:00
Ibby Hadeed
5203d026d4 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-14 02:09:11 -04:00
Ibby Hadeed
362ae4422b docs(sqlite): fix doc generation issue 2017-05-14 02:09:07 -04:00
Nicolas Molina Monroy
965a90c52c feat(mix-panel): add timeEvent (#1536)
* feat(mix-panel): add timeEvent

* style(mixpanel): remove params
2017-05-14 00:58:22 -04:00
Ibby Hadeed
a28de660bc refactor(): no implicit any 2017-05-14 00:55:16 -04:00
Ibby Hadeed
fec19b734c fix(sqlite): fix implementation and improve typings 2017-05-14 00:52:30 -04:00
Ibby Hadeed
6773ed341c chore(): add --ignore-errors flag 2017-05-14 00:20:38 -04:00
Ibby Hadeed
23ad074d04 chore(): update changelog 2017-05-13 23:12:36 -04:00
Ibby Hadeed
912668d8f8 3.8.0 2017-05-13 23:12:29 -04:00
Ibby Hadeed
cf531af244 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-13 23:12:20 -04:00
Ibby Hadeed
a94651dc75 chore(): update templates 2017-05-13 22:53:04 -04:00
Alexandru Albu
ad0680bd90 docs(google-map): update install command (#1525)
command for adding plugin has changed
2017-05-13 22:47:01 -04:00
IonicOnCouch
66a82dd5ce docs(): maximumImagesCount works only for Android. (#1540)
The option "maximumImagesCount" works only for Android. So there should be a comment.
2017-05-13 22:46:41 -04:00
jasonmamy
8ea8ac40e5 refactor(wheel-selector): fixed the interfaces and default values (#1544) 2017-05-13 22:46:19 -04:00
Daniel Sogl
2d477ba9a0 docs(readme): https + removed V2 tag (#1551) 2017-05-13 22:46:09 -04:00
Ibby Hadeed
f98f90a9a3 fix(file): various fixes (#1553)
* save schanges

* save changes

* save changes

* save changes
2017-05-13 22:44:10 -04:00
wleberre
fba0ce2bb6 docs(): fix typo (#1548) 2017-05-13 21:28:22 -04:00
Daniel Sogl
22d0260cde chore(package): bump angular and typescript (#1549) 2017-05-13 20:19:45 -04:00
Daniel Sogl
25aeb406ae core(package): update tslint-ionic-rules (#1539) 2017-05-12 05:03:52 -04:00
Daniel Sogl
385da017a0 feat(video-capture-plus): add Video Capture Plus plugin (#1538)
* feat(plugin): Video Capture Plus

fix #709

* Updated interfaces
2017-05-12 05:03:24 -04:00
Raman Rasliuk
efae1be116 fix(file): fix file reader (#1537)
Pass reader object on call function.
Fixes #1530
2017-05-12 04:18:38 -04:00
Eamon Bauman
7f919d5c90 docs(): fix options for prepareInterstitial (#1535)
Using the example in the previous version of this document, calling prepareInterstitial(adId) resulted in an
"-[__NSCFString count]: unrecognized selector sent to instance"
exception. This was alleviated by changing the call to prepareInterstitial({adId: adId}) 
(e.g. passing in an options object vs. just the adid string)
2017-05-12 04:16:48 -04:00
ChristopherTotty
00c156811f docs(geolocation): fix reference (#1533) 2017-05-12 04:16:14 -04:00
Jan Piotrowski
8512dd5d92 docs(header-color): improve description (#1532) 2017-05-12 04:16:01 -04:00
Niccolò Belli
ad514bbf63 fix(fcm): fix method name (#1531) 2017-05-12 04:15:35 -04:00
Dave Alden
45108c4c18 fix(diagnostic): fix Cordova decorator in camera API (#1527) 2017-05-12 03:53:56 -04:00
Diogo Trentini
17e166d04d docs(camera-preview): fix interface name (#1526) 2017-05-12 03:50:27 -04:00
Jan Piotrowski
dea9f42d5f Changed ionic pluginto ionic cordova plugin 2017-05-11 17:53:15 +02:00
Jan Piotrowski
e193baf1c1 Removed inline style block (as it was added to the main site css) 2017-05-11 11:33:19 +02:00
Ibby Hadeed
10d61c21c2 fix(app-minimize): fix pluginRef 2017-05-11 04:48:25 -04:00
Ibby Hadeed
7e322aadb8 docs(firebase): mark plugin as beta 2017-05-09 23:50:23 -04:00
Ibby Hadeed
4bd4f7fa84 chore(): update changelog 2017-05-09 18:39:58 -04:00
Ibby Hadeed
89708781bf 3.7.0 2017-05-09 18:39:50 -04:00
Ibby Hadeed
cf8d2e7f02 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-09 18:33:42 -04:00
Daniel Sogl
54b6659469 docs(firebase): update platforms (#1521)
fix #1518
2017-05-09 18:29:43 -04:00
Ibby Hadeed
36d603bdd7 docs(web-instent): mark as beta 2017-05-09 18:29:26 -04:00
Ibby Hadeed
15cf751441 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-09 18:29:13 -04:00
Daniel Sogl
252c3e4a21 fix(web-intent): updated source (#1519)
* refactor(web-intent): updated source

fix #1517

* Update index.ts
2017-05-09 18:29:06 -04:00
Chris Topaloudis
958380275c fix(google-maps): fix fromPointToLatLng params (#1514) 2017-05-09 18:27:05 -04:00
Ibby Hadeed
e35408adca docs(): remove result word 2017-05-09 18:25:48 -04:00
Ibby Hadeed
c7400b1ab1 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-09 18:25:08 -04:00
Daniel Sogl
4e9b2d917b feat(mobile-accessibility): add Mobile Accessibility plugin (#1505)
* feature(plugin): mobile-accessibility

fix #1304

* fixed linting

* lint

* usage

* optimized promises
2017-05-09 18:24:59 -04:00
Daniel Sogl
e04b7a4a24 docs(broadcaster): fix example (#1484)
fix #1369
2017-05-09 18:23:37 -04:00
Daniel Sogl
46b4e25f7b feat(plugin): add File encryption plugin (#1509)
* feat(plugin): File encryption

fix #618

* typo
2017-05-09 18:22:18 -04:00
Ibby Hadeed
12356d2d34 refactor 2017-05-09 18:21:46 -04:00
Ibby Hadeed
de320ac21c Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-09 18:20:58 -04:00
Daniel Sogl
3d747d38b2 feat(phonegap-local-notifications): add Phonegap local notifications plugin (#1474)
* typo(barcode-scanner): fixe circle lint error

* typo(docs):  Unified the documentations

In some plugins the typescript markup was missing.
I also unified the console.log string from console.log("hello") to console.log('Hello') so any plugin page look the same.

* added phonegap-local-notifications

* update #1

* update #3

* update #4

* cleaned up the usage part

* removed old folder

* Update index.ts

* Update index.ts

* Update index.ts

* Update index.ts

* Update index.ts

* Update index.ts
2017-05-09 18:20:49 -04:00
Ibby Hadeed
1379f6389a fix(document-viewer): fix params 2017-05-09 18:18:35 -04:00
Daniel Sogl
6855fe8f7d feat(plugin): add Document Viewer plugin (#1520)
* typo(barcode-scanner): fixe circle lint error

* typo(docs):  Unified the documentations

In some plugins the typescript markup was missing.
I also unified the console.log string from console.log("hello") to console.log('Hello') so any plugin page look the same.

* Initial commit

* updated interface

* updated interface
2017-05-09 18:14:47 -04:00
Daniel Sogl
142525e133 feature(autostart): add Autostart plugin (#1506)
fix #1163
2017-05-09 18:13:51 -04:00
Ibby Hadeed
af66a0dbec refactor(wheel-selector): fixes & enhancements 2017-05-09 18:12:56 -04:00
Ibby Hadeed
235f51a351 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-09 18:09:16 -04:00
jasonmamy
8fe4eecbb1 feat(wheel-selector): add Native wheel Selector plugin (#1522) 2017-05-09 18:09:08 -04:00
Ibby Hadeed
14959c1162 fix(flurry-analytics): fix plugin wrapper 2017-05-09 18:07:09 -04:00
Ibby Hadeed
e84359b2b1 refactor(google-maps): accept string or number 2017-05-09 17:56:03 -04:00
Ibby Hadeed
88f393288d docs(): fix typo 2017-05-09 17:55:21 -04:00
Ibby Hadeed
eb30ad2fec docs(): update 2017-05-09 17:55:08 -04:00
Robert Coie
ec85792a10 fix(google-maps): add args to panBy (#1507) 2017-05-09 17:54:25 -04:00
Daniel Sogl
ce2cc1b815 feat(intercom): add Intercom plugin (#1504) 2017-05-09 17:53:15 -04:00
Daniel Sogl
5ee79b4672 feat(android-premissions): add Android Permissions plugin (#1508)
fix #929
2017-05-09 17:52:58 -04:00
Daniel Sogl
ce72be76bc fix(flurry-analytics): fix pluginRef (#1485)
fix #1399
2017-05-09 17:48:07 -04:00
Daniel Sogl
f96505f533 docs(email composer): out of beta (#1480)
This repo is out of beta and they fixed problems with newer android versions

https://github.com/hypery2k/cordova-email-plugin/commit/171b99b
2017-05-09 17:44:00 -04:00
Daniel Sogl
f6835dc9b8 docs(fingerprint-aio): out of beta (#1479)
This plugin is out of beta (1.1.0)
2017-05-09 17:42:36 -04:00
Daniel Sogl
302fa48e7c chore(): fix ionic native import (#1471) 2017-05-09 17:39:08 -04:00
Daniel Sogl
ed6044d4e8 feat(android-fingerprint-auth): add ERRORS constant (#1470)
* Update index.ts

* fix lint

* linter
2017-05-09 17:38:30 -04:00
Daniel Sogl
aa9826f657 feat(facebook): add EVENTS constant (#1510)
* improve(facebook): added missing EVENTS

* Update index.ts

* lint
2017-05-09 17:36:13 -04:00
Daniel Sogl
d25b2f16a9 feat(app-minimize): add AppMinimize plugin (#1501)
* typo(barcode-scanner): fixe circle lint error

* typo(docs):  Unified the documentations

In some plugins the typescript markup was missing.
I also unified the console.log string from console.log("hello") to console.log('Hello') so any plugin page look the same.

* Added AppMinimize plugin

* promisse

* usage
2017-05-09 17:35:13 -04:00
Daniel Sogl
14f38a0e28 feat(health-kit): add HealthKit plugin (#1499)
* typo(barcode-scanner): fixe circle lint error

* typo(docs):  Unified the documentations

In some plugins the typescript markup was missing.
I also unified the console.log string from console.log("hello") to console.log('Hello') so any plugin page look the same.

* Initial commit

- added Plugin infos
- added methods

* Added Interface

* Implemented all methods

* fixed retun types

TODO: Improve Interface Docs

* Interface discription

Still needs some improvements
2017-05-09 17:34:38 -04:00
Daniel Sogl
c7111a3117 fix(app-preferences): value can be any type (#1498)
* refactor(AppPreferences): changed input type

fix #1334

* Update index.ts
2017-05-09 17:33:47 -04:00
Daniel Sogl
65a8095e5f feat(social-sharing): add setIPadPopupCoordinates method (#1497)
* refactor(social sharing): added missing method

fix #1288

* Update index.ts
2017-05-09 17:33:10 -04:00
Daniel Sogl
70c9558d2b docs(youtube-video-player): update repo (#1496)
* refactor(YoutubeVideoPlayer): updated repo

fix #1352

* Update index.ts

* Update index.ts

* Update index.ts
2017-05-09 17:32:47 -04:00
Daniel Sogl
a5b2e981b3 feat(safari-view-controller): add missing options (#1490)
* update(SafariViewController): added missing options

fix #1489

* alphabetical

* fix linter

* Update index.ts

* Update index.ts
2017-05-09 17:32:24 -04:00
Daniel Sogl
21c9cd2e57 feat(native-ringtones): add Native Ringtones plugin (#1488)
* typo(barcode-scanner): fixe circle lint error

* typo(docs):  Unified the documentations

In some plugins the typescript markup was missing.
I also unified the console.log string from console.log("hello") to console.log('Hello') so any plugin page look the same.

* initial commit

Added wrapper

* Added usage guide

* Added parms
2017-05-09 17:31:57 -04:00
Patrick Bußmann
e35501d3e5 docs(media): add hints for media plugin if its not recording on iOS #1452 (#1487) 2017-05-09 17:31:21 -04:00
Daniel Sogl
e6a647b08b fix(background-mode): add missing method (#1486)
fix #1393
2017-05-09 17:31:01 -04:00
Dave Alden
a4151abebf feat(diagnostic): update to support latest signatures (#1458)
* refactor(diagnostic plugin): update camera API function signatures to support cordova.plugins.diagnostic@3.6.0. See 515317e89a

* fix(diagnostic plugin): fix whitespace linting errors in previous commit

* * fix(diagnostic plugin): add callback indices to Cordova decorator in camera API so externalStorage parameter can be optionally omitted.
See https://github.com/driftyco/ionic-native/pull/1458#issuecomment-299030833

* fix(diagnostic plugin): fix incorrect return type on getCameraRollAuthorizationStatus()
2017-05-09 17:30:11 -04:00
Askhat Saiapov
6cc6393712 feat(fcm): support Firebase Cloud Messaging plugin (#1449)
* feat(): add fcm plugin

* fix(): fix whitespace

* fix(): add observables for methods

* feat(): add NotificationData interface

* doc(): improve examples in document

* style(): remove usage examples from emthod declarations

* fix(): decorate methods appropriately
2017-05-09 17:29:29 -04:00
Daniel Sogl
8330c92921 feat(camera-preview): add tapToFocus method (#1494)
* Update index.ts

* Update index.ts
2017-05-07 10:17:00 -04:00
Fabriece Sumuni
80af55100e docs(): clarify the options for target (#1493)
I struggled to figure out what options I had for target until I read them from the github repo.
I'm assuming that the documentation is generated from the comments and I think addition clarifies the intent of `target` a bit.
2017-05-07 09:35:41 -04:00
Daniel Sogl
8311aaf893 fix(native-storage): add missing keys method (#1495)
fix #1415
2017-05-07 09:31:59 -04:00
Ibby Hadeed
b2d07b43cc refactor(file): minimize code for readFile 2017-05-05 15:07:54 -04:00
Ibby Hadeed
134eab2dcc refactor(file): fix build issues 2017-05-05 14:46:49 -04:00
Daniel Sogl
aeea03478b refactor(mixpanel): remove showSurvey (#1469)
* Update index.ts

* Update index.ts
2017-05-05 14:20:20 -04:00
Daniel Sogl
4db902b9dd docs(iab): https://ionicframework.com/ (#1468) 2017-05-05 14:19:48 -04:00
Daniel Sogl
94bd82097c docs(zbar): fix import and usage (#1467)
* docs(zbar): fixed import and usage

* Update index.ts

* Update index.ts
2017-05-05 14:19:31 -04:00
Daniel Sogl
8a445e9a31 fix(build): fix build errors (#1472) 2017-05-05 14:13:07 -04:00
Rory Standley
78e19e5f5b docs(): add the unit of measurement for radius value (#1463)
Didn't seem quite obvious to me so might help someone else
2017-05-05 14:08:15 -04:00
Daniel Sogl
7738622976 docs(): fix typo (#1476)
I missed some typo
2017-05-05 14:07:46 -04:00
Daniel Sogl
d9cc959939 feat(touch-id): add didFingerprintDatabaseChange (#1475)
fix #1466
2017-05-05 13:54:30 -04:00
Jan Piotrowski
4835182ad5 Replace inline styles with style block 2017-05-05 13:38:58 +02:00
Jan Piotrowski
49ac21145a Add link to "Add this plugin to your app's module" and make Installation into ordered list 2017-05-05 13:31:16 +02:00
Jan Piotrowski
8a81ee08e3 Switch placement of Description and Installation 2017-05-05 13:06:31 +02:00
Daniel Sogl
bf88b78c63 docs(apprate): update example (#1455)
* docs(apprate): update example

* Update index.ts

* typo

* fixed preferences

* Update index.ts
2017-05-03 17:53:42 -04:00
Daniel Sogl
c600cd622e docs(app-preferences): unified example (#1456)
I changed the usage part to match the usage part of other plugins 

1. constructor with the private import
2. Call the plugin methods
2017-05-03 17:01:28 -04:00
Daniel Sogl
14a1cb9ee7 docs(admob): improve example (#1454) 2017-05-03 17:00:22 -04:00
Daniel Sogl
92468c9b84 docs(google-maps): example fix #1444 (#1461)
It should be clearer now that the marker etc. should be added inside the .then() block

Related to: 
- https://github.com/driftyco/ionic-native/issues/1444
- https://forum.ionicframework.com/t/ionic-build-android-failed/88742/9
2017-05-03 16:40:09 -04:00
Dylan v.d Merwe
6e2fdf98a2 fix(globalization): getDatePattern return types (#1451)
Added missing return types to getDatePattern.
2017-05-01 16:46:06 -04:00
Daniel Sogl
84cd81dcaf refactor(admob): remove unneeded imports (#1450)
* refactor(admob): remove unneeded imports

* Update index.ts
2017-05-01 16:36:22 -04:00
Daniel Sogl
c6f9fa356f style(): unify docs and spacing (#1448)
* typo(barcode-scanner): fixe circle lint error

* typo(docs):  Unified the documentations

In some plugins the typescript markup was missing.
I also unified the console.log string from console.log("hello") to console.log('Hello') so any plugin page look the same.
2017-04-30 14:36:22 -04:00
Daniel Sogl
a7c9abc449 refactor(barcode-scanner): fix tslint error (#1447) 2017-04-30 14:13:21 -04:00
SVANNER
748c6bd9be feat(camera-preview): add new focus methods & getFlashMode() (#1442)
4 new methods are available in the master:
- getSupportedFocusModes();
- getFocusMode();
- seFocusMode();
- getFlashMode();
2017-04-30 13:21:28 -04:00
Daniel Sogl
1a682bc3de docs(README): Ionic 3 Update / typo (#1441)
_ Update example import for Ionic 
- Removed Ionic 2.x
- typo
2017-04-30 13:19:55 -04:00
Daniel Sogl
58ad707dc3 docs(secure storage): rename item to key (#1445) 2017-04-30 13:18:49 -04:00
Jan Piotrowski
36d101af02 remove stray "f" 2017-04-29 16:47:23 +02:00
Jan Piotrowski
8e65474c1d Add headline to install commands 2017-04-29 16:45:34 +02:00
Patrick Reames
11dbe42a0d feat(firebase): add support for firebase ErrorLog (#1440)
* feat(firebase): add support for firebase ErrorLog

* feat(firebase): add support for firebase ErrorLog
2017-04-28 11:39:28 -04:00
Robert Coie
1123299274 refactor(barcode-scanner): improve typings (#1437) 2017-04-28 09:35:33 -04:00
Gianfrancø Palumbo
4ca4f9443d docs(): fix typos (#1435)
the OCD in me is here to help :P
2017-04-28 09:33:30 -04:00
Daniel Sogl
83a3569155 docs(): remove identifier from product id (#1432) 2017-04-28 09:33:05 -04:00
Søren Bryder
f699c6d4b7 feat(native-page-transitions): add pendingTransition methods (#1344) 2017-04-28 09:32:44 -04:00
Jan Piotrowski
dd69810494 docs(printer): fix example (#1439)
`this.p` is not defined as Printer is imported as `printer`
2017-04-28 09:32:13 -04:00
Ibby Hadeed
822be1c248 chore(): update changelog 2017-04-27 03:30:56 -04:00
Ibby Hadeed
1d29ed38f6 3.6.1 2017-04-27 03:30:54 -04:00
Ibby Hadeed
bcb3c61fe0 chore(): bump core package dependency version 2017-04-27 03:29:51 -04:00
Ibby Hadeed
955476b45b chore(): update changelog 2017-04-27 01:01:19 -04:00
Ibby Hadeed
95aa3e2f26 3.6.0 2017-04-27 01:01:08 -04:00
Ibby Hadeed
facdcdc956 docs(): add save flag
closes #1385
2017-04-27 00:55:23 -04:00
Ibby Hadeed
ab782f7093 chore(): update templates 2017-04-27 00:53:06 -04:00
Ibby Hadeed
6811750711 docs(secure-storage): fix types
closes #1416
2017-04-27 00:51:57 -04:00
Ibby Hadeed
c3d23b0ee9 refactor(): cleanup 2017-04-27 00:49:23 -04:00
Ibby Hadeed
17366a29da feat(): add IonicNativePlugin base class (#1425)
* add base class

* properties are static

* some fixes

* tslint
2017-04-27 00:36:12 -04:00
Matt Thiessen
39eaebfafd docs(): fix docs (#1423) 2017-04-27 00:36:01 -04:00
Andrew Crites
66874cc598 chore(build): allow option to specify plugins to build (#1421) 2017-04-27 00:35:47 -04:00
Andrew Crites
16dc71ab71 feat(keychain): add Keychain plugin (#1420)
* feat(keychain): adding keychain plugin

ionic-native for cordova ios keychain plugin

* feat(keychain): make touchID params optional in type def
2017-04-27 00:35:29 -04:00
Ronald Mak
b58149f2f2 fix(media): function 'create' never returns media object (#1419)
The function never returns an object of MediaObject. The onSuccess callback is wrongly used to return the object. In fact, onSuccess/onError callbacks are only invoked after the current play, record, or stop action is called.
2017-04-27 00:34:43 -04:00
Kendall González León
b6afc19e72 docs(): fix docs (#1418)
On line 11 there was not closing single quote.
2017-04-27 00:34:22 -04:00
Daniel Sogl
52d731e7d9 chore(): update to Angular 4 (#1391)
Since Ionic 3.0 released, the package should be able  to support Angular 4.0.0.
I updated the dependencies for that.
2017-04-18 17:52:34 -04:00
Ibby Hadeed
7df7a557da chore(): update changelog 2017-04-18 17:48:08 -04:00
Ibby Hadeed
c720bfead1 3.5.0 2017-04-18 17:48:00 -04:00
Ibby Hadeed
b4102310e7 tslint 2017-04-18 17:47:24 -04:00
Ibby Hadeed
1b84db035f feat(camera-preview): add new plugin methods
New methods and constants available for CameraPreview
2017-04-18 17:44:01 -04:00
Ibby Hadeed
37e8eddd86 feat(background-fetch): add new status method
feat(background-fetch): add status method
2017-04-18 17:42:00 -04:00
Ibby Hadeed
4fb9b949d7 feat(action-sheet): update to match latest version
feat(action-sheet): update to newest version
2017-04-18 17:41:11 -04:00
Ibby Hadeed
66bc034c80 fix(google-maps): fix Geocoder pluginRef
Fix Geocoder's pluginRef
2017-04-18 17:40:33 -04:00
Ibby Hadeed
593c1ee6ca feat(health): update datatypes
Update datatypes to match recent release of plugin
2017-04-18 17:39:47 -04:00
Ibby Hadeed
91439be0bd feat(native-geocoder): add district property
native-geocoder: added district for larger cities
2017-04-18 17:38:17 -04:00
Ibby Hadeed
4ae50561b4 feat(flurry-analytics): add flurry analytics plugin
Added Flurry Analytics wrapper
2017-04-18 17:37:39 -04:00
Ibby Hadeed
1f0986fa6f docs(): fix reference
change executeSql doc to mention create instead of openDatabase
2017-04-18 17:36:39 -04:00
Ibby Hadeed
1be4c1c669 docs(): battery-status example fix (#1387)
Closes #1383
2017-04-18 17:36:15 -04:00
Dylan v.d Merwe
c7a6e6625a docs(): fix typo in media example (#1386) 2017-04-18 17:35:27 -04:00
SVANNER
0a7f56d960 New methods and constants available 2017-04-18 07:15:15 +02:00
Dylan v.d Merwe
f7044a08de bug(doc): battery-status example fix
Fix for https://github.com/driftyco/ionic-native/issues/1383
2017-04-17 23:26:56 +02:00
John-Luke
6168eaee47 feat(background-fetch): add status method 2017-04-17 15:22:44 -03:00
John-Luke
9c925806ed feat(action-sheet): update to newest version 2017-04-17 14:27:13 -03:00
Robert Coie
3e8211461a change executeSql doc to mention create instead of openDatabase 2017-04-16 16:27:09 -07:00
hodak
b2120c68e2 Fix Geocoder's pluginRef 2017-04-15 13:29:10 +02:00
Ankush Aggarwal
1da12b9330 added HealthDataType interface and usage instructions 2017-04-14 08:21:45 -07:00
Amit Moryossef
4bd6aaba2b fix(core): fix bug when checking if plugin exists (#1348)
* fix(cordova-plugin): add check if method exists

For https://github.com/driftyco/ionic-native/issues/1327

* fix(plugin): add typeof to undefined check
2017-04-14 09:49:57 -04:00
Ibby Hadeed
f396940044 fix(rollbar): fix pluginRef 2017-04-14 09:42:46 -04:00
Ibby Hadeed
6bba72d32a fix(media): fix issue with create method
closes #1333
2017-04-14 09:19:25 -04:00
Juan J. San Emeterio
d30b534150 docs(google-plus): options parameter is required (#1368)
Issue reported: https://forum.ionicframework.com/t/ionic-native-googleplus-unrecognized-selector-sent-to-instance/81944/3

In order to correctly call the login method on the GooglePlus provider you need to pass it the 'options' parameter even if it's empty.
2017-04-14 09:14:41 -04:00
Kendall González León
8edc27079c docs(): fix example (#1362)
Line 224 fixed, Incorrect single quotes in the string.
(don't -> do not) remove quotes for avoid bad format.
2017-04-14 09:13:52 -04:00
Stefan Huber
55f9943f86 docs(media): minor fix (#1358)
`getDuration` is synchronous, inside the example it was used with a promise, which is quite missleading...
2017-04-14 09:07:27 -04:00
Ctibor Laky
352ad7ab2f docs(): fix example (#1355) 2017-04-14 09:04:46 -04:00
Gianfrancø Palumbo
15bf509ae0 docs(): fix typo (#1354) 2017-04-14 09:04:32 -04:00
Nikhil
6b9f650a19 docs(social-sharing): fix example (#1351)
ShareViaEmail parameter for providing email "must be null or an array" because it's type is "string:[]" and the provided syntax is wrong, so i have updated that syntax.
2017-04-14 09:04:11 -04:00
Leonardo Ruhland
b30883a876 docs(): fix package name (#1340)
Fixes documentation with the new import syntax
2017-04-14 08:59:15 -04:00
Garry-H
caec80b661 docs(nfc): enhance docs (#1325)
labeled methods with classes, improved method descriptions
2017-04-14 08:58:53 -04:00
LAÉCIO FERREIRA MORAIS
620289f54b docs(): fix typo (#1324) 2017-04-14 08:58:01 -04:00
Lenglet Anthony
5a6246425f docs(): fix typo (#1323) 2017-04-14 08:57:41 -04:00
Ankush Aggarwal
43b75af58b changed any to specific types 2017-04-13 17:56:59 -07:00
Ankush Aggarwal
44957e2197 Update datatypes to match recent release of plugin
I made changes to cordova-plugin-health to accept the following array as datatypes. Earlier it was just an array of strings. Now it also contains an object with `read` and `write` array.

```
[
  'calories', 'distance',   //read and write permissions
  {
    read : ['steps'],       //read only permission
    write : ['height', 'weight']  //write only permission
  }
]
```

Don't know how to specify this array in typescript so just replaced by 'any'
2017-04-11 09:39:24 -07:00
fredroo
c15c11cf95 docs(): enhance example (#1336) 2017-04-08 16:58:36 -04:00
Ankush Aggarwal
1b429638fe docs(): add types (#1342)
Resolves - https://github.com/driftyco/ionic-native/issues/1331
2017-04-08 16:58:07 -04:00
Andréas Hanss
99576d823d Edit for 3.0 (#1345) 2017-04-08 16:57:38 -04:00
Robert Herhold
0147704a4f docs(): fix typo (#1329) 2017-04-05 23:37:08 -04:00
Yasin Simsek
f6a7e5fe9b native-geocoder: added district for larger cities 2017-04-03 12:49:29 +02:00
anastasia
ebb47ce591 fixed doc of flurry analytics wrapper 2017-04-03 13:14:08 +03:00
gujiman
57eabc002a docs(paypal): fix package name in example (#1313)
The import ref for paypal is incorrect. I've added the correct name.
2017-04-01 22:38:42 -04:00
Joel Szwarga
24c8d5d627 docs(music-controls): fix example code (#1315)
The sample code does not work...this change returns the observable first with subscribe() before actually calling the Observable's subscribe method.

In fact, the way it's written in the example, the code would not build because of typescript errors.
2017-04-01 22:38:17 -04:00
Ibby Hadeed
4ceb340630 docs(admob-free): fix plugin name 2017-03-31 23:15:27 -04:00
anastasia
ec8d318280 Finish flurry-analytics 2017-03-31 17:38:11 +03:00
anastasia
8add83612d added flurry analytics wrapper 2017-03-31 17:36:09 +03:00
Gengjun Wu
0beefb3079 docs(flashlight): fix typo (#1306)
There is a typo on line 14, changed from

 * constructor(private flashlight: FlashLight) { }

to

 * constructor(private flashlight: Flashlight) { }
2017-03-31 03:02:39 -04:00
Ibby Hadeed
4d2f720b01 chore(): update changelog 2017-03-30 15:58:15 -04:00
Ibby Hadeed
d29ca88b18 3.4.4 2017-03-30 15:58:12 -04:00
Ibby Hadeed
c94dd41f92 Merge branch 'master' of github.com:driftyco/ionic-native 2017-03-30 15:58:11 -04:00
gurnard123
b005efc52b docs(intel-security): fix references (#1305)
corrected the documentation to correct the read code snippet. As detailed here:
https://forum.ionicframework.com/t/crypto-libraries-with-ionic-2/84629
2017-03-30 15:50:26 -04:00
mugenyi henry
f4c4317f16 docs(admob): fix package name (#1301)
remove the dash "import { AdMob, AdMobOptions, AdSize, AdExtras } from '@ionic-native/ad-mob';" to import { AdMob, AdMobOptions, AdSize, AdExtras } from '@ionic-native/admob' because typescript will not import the specified clases
2017-03-30 15:50:02 -04:00
Ibby Hadeed
145577f9bc fix(push): hasPermission is part of Push object
addresses comment in #1297
2017-03-30 15:48:46 -04:00
Ibby Hadeed
390f474ad5 chore(): update changelog 2017-03-29 19:21:14 -04:00
Ibby Hadeed
d8655f055e 3.4.3 2017-03-29 19:21:07 -04:00
Ibby Hadeed
65cf94b67b fix(app-preferences): fix bug with fetch method
closes #1299
2017-03-29 19:20:46 -04:00
Ibby Hadeed
b91757e7e9 fix(secure-storage): return unfunctional SecureStorageObject if plugin doesn't exist 2017-03-29 19:15:54 -04:00
Ibby Hadeed
612cb963e1 Merge branch 'master' of github.com:driftyco/ionic-native 2017-03-29 19:11:01 -04:00
Odd Christer Brovig
8b31d72139 feat(secure-storage): add keys() and clear() methods (#1281) 2017-03-29 19:10:49 -04:00
mchristofersenrealnets
3b9e7253db docs(admob): @ionic-native (#1298)
Can't import from 'ionic-native'. need to use "@ionic-native/admob-free".
2017-03-29 19:08:54 -04:00
Ibby Hadeed
8b86a12e07 docs(native-storage): add platforms info 2017-03-29 19:02:12 -04:00
Josh Babb
543ae7abf8 docs(jins-meme): add extended usage example (#1286) 2017-03-29 18:56:35 -04:00
Ibby Hadeed
6ccf3a66bb docs(native-page-transitions): improve docs
closes #1294
2017-03-29 18:56:15 -04:00
Ibby Hadeed
2b94ffdc44 fix(admob): add missing license property
fixes #1291
2017-03-29 18:39:46 -04:00
Ibby Hadeed
208748a660 fix(push): add missing plugin decorator
closes #1297
2017-03-29 18:34:02 -04:00
perry
47b593b43d chore(docs): moving docs from /docs/v2/native to /docs/native 2017-03-29 11:19:31 -05:00
Perry Govier
947bf227d0 Running CI2 on master 2017-03-29 10:23:28 -05:00
Perry Govier
4f7718b03e Merge pull request #1289 from driftyco/cci2
chore(): use CircleCI 2
2017-03-29 10:22:41 -05:00
Ibby Hadeed
31d0f71cc9 works 100% 2017-03-28 20:32:14 -04:00
Ibby Hadeed
723ac779df test doc update 2017-03-28 20:30:41 -04:00
Ibby Hadeed
ebd272e30a revert last test commit 2017-03-28 20:28:27 -04:00
Ibby Hadeed
029a196f38 test doc update 2017-03-28 20:27:35 -04:00
Ibby Hadeed
b872bd01ce docs(): update docs 2017-03-28 20:26:43 -04:00
Ibby Hadeed
d6711080e3 update docs on master only 2017-03-28 20:22:34 -04:00
Ibby Hadeed
3e124f1807 update docs only master 2017-03-28 20:13:44 -04:00
Ibby Hadeed
e474b2987f replace cache pattern since we messed it up 2017-03-28 20:06:28 -04:00
Ibby Hadeed
75ee0418bf replace cache pattern since we messed it up 2017-03-28 20:04:03 -04:00
Ibby Hadeed
7c8c71bdc8 fix node_modules path 2017-03-28 20:02:33 -04:00
Ibby Hadeed
3d82d0d592 fix restore cache key 2017-03-28 20:01:17 -04:00
Ibby Hadeed
3f2a983c6e more caching 2017-03-28 19:59:33 -04:00
Ibby Hadeed
7953ca0e72 fixes 2017-03-28 19:46:17 -04:00
Ibby Hadeed
117b0578b0 fixes 2017-03-28 19:45:44 -04:00
Ibby Hadeed
cadafaa3b6 build timeouts 2017-03-28 19:41:50 -04:00
Ibby Hadeed
4778637bd5 Remove machine option 2017-03-28 19:37:52 -04:00
Ibby Hadeed
a1ff059e90 try building 2017-03-28 19:37:05 -04:00
Ibby Hadeed
15237ea983 fix syntax 2017-03-28 19:32:07 -04:00
Ibby Hadeed
b0710cad1e test cci2 2017-03-28 19:31:39 -04:00
Ibby Hadeed
ee269669aa 3.4.2 2017-03-28 11:23:37 -04:00
Ibby Hadeed
97307a2b8c amend(network): fix observable import 2017-03-28 09:41:12 -04:00
Ibby Hadeed
0ae3cb0d00 chore(): update changelog 2017-03-28 09:34:55 -04:00
Ibby Hadeed
0dee3500f7 3.4.1 2017-03-28 09:34:37 -04:00
Ibby Hadeed
b53af8e3c9 fix(admob): fix event listeners
fixes #1165
2017-03-28 09:28:02 -04:00
Ibby Hadeed
006f7dc2ad fix(network): fix onchange method
fixes #1173
2017-03-28 09:07:12 -04:00
Ibby Hadeed
19bc8419e0 fix(network): remove ontypechange method 2017-03-28 09:04:45 -04:00
Ibby Hadeed
d3d8f8264c docs(): add platforms tag 2017-03-28 08:54:40 -04:00
Ibby Hadeed
8262219d05 docs(): update developer docs
closes #1210
2017-03-28 08:49:36 -04:00
195 changed files with 12022 additions and 2357 deletions

View File

@@ -4,8 +4,8 @@
#### There are no rules, but here are a few things to consider:
###### Before you submit an issue:
* Do a quick search to see if there are similar issues
* Make sure that you are waiting for `deviceready` to fire before interacting with any plugin. If you are using Ionic 2, this can be done using [the `Platform.ready()` function](http://ionicframework.com/docs/v2/api/platform/Platform/#ready).
* **Check that you are using the latest version of** `ionic-native`, you can install the latest version by running `npm i --save ionic-native@latest`
* Make sure that you are waiting for `deviceready` to fire before interacting with any plugin. If you are using Ionic 2, this can be done using [the `Platform.ready()` function](http://ionicframework.com/docs/api/platform/Platform/#ready).
* **Check that you are using the latest version of** `ionic-native`, you can install the latest version by running `npm i --save @ionic-native/core@latest`
###### Still having problems? submit an issue with the following details:
* Short description of the issue
@@ -16,4 +16,4 @@
## Feature request?
Have a plugin you'd like to see supported? Since Ionic Native is a thin wrapper around existing Cordova plugins, adding support for new plugins is as easy as creating a new wrapper for whatever plugin you'd like to add.
Take a look at our [Developer Guide](https://github.com/driftyco/ionic-native/blob/master/DEVELOPER.md) for more info on adding new plugins.
Take a look at our [Developer Guide](https://github.com/ionic-team/ionic-native/blob/master/DEVELOPER.md) for more info on adding new plugins.

28
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,28 @@
**I'm submitting a ...** (check one with "x")
[ ] bug report
[ ] feature request
<!-- Please do not submit support requests here, use one of these channels: https://forum.ionicframework.com/ or https://ionicworldwide.herokuapp.com/ -->
**Current behavior:**
<!-- Describe how the bug manifests. -->
**Expected behavior:**
<!-- Describe what the behavior would be without the bug. -->
**Steps to reproduce:**
<!-- If you are able to illustrate the bug or feature request with an example, please provide steps to reproduce. -->
**Related code:**
```
insert any relevant code here
```
**Other information:**
<!-- List any other information that is relevant to your issue. Stack traces, related issues, suggestions on how to fix, Stack Overflow links, forum links, etc. -->
**package.json info:**
```json
insert the content here
```

File diff suppressed because it is too large Load Diff

View File

@@ -17,6 +17,7 @@ gulp plugin:create -n PluginName
gulp plugin:create -m -n PluginName
```
Running the command above will create a new directory `src/@ionic-native/plugins/plugin-name/` with a single file in there: `index.ts`. This file is where all the plugin definitions should be.
Let's take a look at the existing plugin wrapper for Geolocation to see what goes into an Ionic Native plugin (comments have been removed for clarity):
@@ -102,7 +103,7 @@ Next, let's look at the `watchPosition` method.
The `@Cordova` decorator has a few more options now.
`observable` indicates that this method may call its callbacks multiple times, so `@Cordova` wraps it in an [`Observable`](https://github.com/driftyco/ionic-native#promises-and-observables) instead of a Promise.
`observable` indicates that this method may call its callbacks multiple times, so `@Cordova` wraps it in an [`Observable`](https://github.com/ionic-team/ionic-native#promises-and-observables) instead of a Promise.
`callbackOrder` refers to the method signature of the underlying Cordova plugin, and tells Ionic Native which arguments are the callbacks to map to the wrapping Promise or Observable. In this case, the signature is [`watchPosition(success, error, options)`](https://github.com/apache/cordova-plugin-geolocation#navigatorgeolocationwatchposition), so we need to tell `@Cordova` that the callbacks are the first arguments, not the last arguments. For rare cases, you can also specify the options `successIndex` and `errorIndex` to indicate where in the argument list the callbacks are located.
@@ -110,7 +111,7 @@ The `@Cordova` decorator has a few more options now.
### Testing your changes
You need to run `npm run build` in the `ionic-native` project, this will create a `dist` directory. Then, you must go to your ionic application folder and replace your current `node_modules/ionic-native/dist/` with the newly generated one.
You need to run `npm run build` in the `ionic-native` project, this will create a `dist` directory. The `dist` directory will contain a sub directory `@ionic-native` with all the packages compiled in there. Copy the package(s) you created/modified to your app's node_modules under the `@ionic-native` directory. (e.g. `cp -r dist/@ionic-native/plugin-name ../my-app/node_modules/@ionic-native/`).
### Cleaning the code
@@ -147,4 +148,65 @@ The subject contains succinct description of the change:
* use the imperative, present tense: "change" not "changed" nor "changes"
* do not capitalize first letter
* do not place a period (.) at the end
* entire length of the commit message must not go over 50 characters
* entire length of the commit message must not go over 50 characters
### Ionic Native Decorators
#### Plugin
A decorator to wrap the main plugin class, and any other classes that will use `@Cordova` or `@CordovaProperty` decorators. This decorator accepts the following configuration:
- *pluginName*: Plugin name, this should match the class name
- *plugin*: The plugin's NPM package, or Github URL if NPM is not available.
- *pluginRef*: The plugin object reference. Example: 'cordova.file'.
- *repo*: The plugin's Github Repository URL
- *install*: (optional) Install command. This is used in case a plugin has a custom install command (takes variables).
- *platforms*: An array of strings indicating the supported platforms.
#### Cordova
Checks if the plugin and the method are available before executing. By default, the decorator will wrap the callbacks of the function and return a Promise. This decorator takes the following configuration options:
- **observable**: set to true to return an Observable
- **clearFunction**: an optional name of a method to clear the observable we returned
- **clearWithArgs**: This can be used if clearFunction is set. Set this to true to call the clearFunction with the same arguments used in the initial function.
- **sync**: set to true if the method should return the value as-is without wrapping with Observable/Promise
- **callbackOrder**: set to `reverse` if the success and error callbacks are the first two arguements of the method
- **callbackStyle**: set to `node` if the plugin has one callback with a node style (e.g: `function(err, result){}`), or set to `object` if the callbacks are part of an object
- **successName**: Success function property name. This must be set if callbackStyle is set to object.
- **errorName**: Error function property name. This must be set if callbackStyle is set to object.
- **successIndex**: Set a custom index for the success callback function. This doesn't work if callbackOrder or callbackStyle are set.
- **errorIndex**: Set a custom index for the error callback function. This doesn't work if callbackOrder or callbackStyle are set.
- **eventObservable**: set to true to return an observable that wraps an event listener
- **event**: Event name, this must be set if eventObservable is set to true
- **element**: Element to attach the event listener to, this is optional, defaults to `window`
- **otherPromise**: Set to true if the wrapped method returns a promise
- **platforms**: array of strings indicating supported platforms. Specify this if the supported platforms doesn't match the plugin's supported platforms.
Example:
```ts
@Cordova()
someMethod(): Promise<any> { return; }
@Cordova({ sync: true })
syncMethod(): number { }
```
#### CordovaProperty
Checks if the plugin and property exist before getting/setting the property's value
Example:
```ts
@CordovaProperty
someProperty: string;
```
#### CordovaCheck
Checks if the plugin exists before performing a custom written method. By default, the method will return a promise that will reject with an error if the plugin is not available. This wrapper accepts two optional configurations:
- **observable**: set to true to return an empty Observable if the plugin isn't available
- **sync**: set to true to return nothing if the plugin isn't available
Example:
```ts
@CordovaCheck()
someMethod(): Promise<any> {
// anything here will only run if the plugin is available
}
```

View File

@@ -1,24 +1,24 @@
[![Circle CI](https://circleci.com/gh/driftyco/ionic-native.svg?style=shield)](https://circleci.com/gh/driftyco/ionic-native) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) ![](https://img.shields.io/npm/v/@ionic-native/core.svg)
[![Circle CI](https://circleci.com/gh/ionic-team/ionic-native.svg?style=shield)](https://circleci.com/gh/ionic-team/ionic-native) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) ![](https://img.shields.io/npm/v/@ionic-native/core.svg)
# Ionic Native
Ionic Native is a curated set of wrappers for Cordova plugins that make adding any native functionality you need to your [Ionic 2](http://ionicframework.com/) mobile app easy.
Ionic Native is a curated set of wrappers for Cordova plugins that make adding any native functionality you need to your [Ionic](https://ionicframework.com/) mobile app easy.
Ionic Native wraps plugin callbacks in a Promise or Observable, providing a common interface for all plugins and making it easy to use plugins with Angular change detection.
## Installation
Run following command to install Ionic Native in your project.
```
```bash
npm install @ionic-native/core --save
```
You also need to install the Ionic Native package for each plugin you want to add. Please see the [Ionic Native documentation](http://ionicframework.com/docs/v2/native/) for complete instructions on how to add and use the plugins.
You also need to install the Ionic Native package for each plugin you want to add. Please see the [Ionic Native documentation](https://ionicframework.com/docs/native/) for complete instructions on how to add and use the plugins.
## Documentation
For the full Ionic Native documentation, please visit [http://ionicframework.com/docs/v2/native/](http://ionicframework.com/docs/v2/native/).
For the full Ionic Native documentation, please visit [https://ionicframework.com/docs/native/](https://ionicframework.com/docs/native/).
### Basic Usage
@@ -95,13 +95,13 @@ To do this, you need to provide a mock implementation of the plugins you wish to
First import the `Camera` class in your `src/app/app.module.ts` file:
```ts
```typescript
import { Camera } from '@ionic-native/camera';
```
Then create a new class that extends the `Camera` class with a mock implementation:
```ts
```typescript
class CameraMock extends Camera {
getPicture(options) {
return new Promise((resolve, reject) => {
@@ -113,7 +113,7 @@ class CameraMock extends Camera {
Finally, override the previous `Camera` class in your `providers` for this module:
```ts
```typescript
providers: [
{ provide: Camera, useClass: CameraMock }
]
@@ -121,8 +121,9 @@ providers: [
Here's the full example:
```ts
```typescript
import { NgModule, ErrorHandler } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
@@ -143,6 +144,7 @@ class CameraMock extends Camera {
HomePage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
@@ -163,24 +165,24 @@ export class AppModule {}
Spent way too long diagnosing an issue only to realize a plugin wasn't firing or installed? Ionic Native lets you know what the issue is and how you can resolve it.
![img](http://ionic-io-assets.s3.amazonaws.com/ionic-native-console.png)
![img](https://ionic-io-assets.s3.amazonaws.com/ionic-native-console.png)
## Plugin Missing?
Let us know or submit a PR! Take a look at [the Developer Guide](https://github.com/driftyco/ionic-native/blob/master/DEVELOPER.md) for more on how to contribute. :heart:
Let us know or submit a PR! Take a look at [the Developer Guide](https://github.com/ionic-team/ionic-native/blob/master/DEVELOPER.md) for more on how to contribute. :heart:
## Ionic 1/Angular 1 support
## Ionic V1/Angular 1 support
Ionic Native 3.x supports Ionic 2.x and above. For Ionic/Angular 1 support, please use version 2 of Ionic Native. See the [2.x README](https://github.com/driftyco/ionic-native/blob/8cd648db5cddd7bdbe2bd78839b19c620cc8c04c/README.md) for usage information.
For Ionic V1/Angular 1 support, please use version 2 of Ionic Native. See the [2.x README](https://github.com/ionic-team/ionic-native/blob/8cd648db5cddd7bdbe2bd78839b19c620cc8c04c/README.md) for usage information.
# Credits
Ibby Hadeed - [@ihadeed](http://github.com/ihadeed)
Ibby Hadeed - [@ihadeed](https://github.com/ihadeed)
Tim Lancina - [@timlancina](http://twitter.com/timlancina)
Tim Lancina - [@timlancina](https://twitter.com/timlancina)
Mike Hartington - [@mhartington](https://twitter.com/mhartington)
Max Lynch - [@maxlynch](http://twitter.com/maxlynch)
Max Lynch - [@maxlynch](https://twitter.com/maxlynch)
Rob Wormald - [@robwormald](https://twitter.com/robwormald)

View File

@@ -1,26 +1,48 @@
machine:
node:
version: 5.5.0
ruby:
version: 2.1.2
general:
branches:
only:
- master # ignore PRs and branches
dependencies:
pre:
- ./scripts/docs/prepare.sh
cache_directories:
- "~/ionic-site" # cache ionic-site
test:
override:
- echo "No tests to run"
deployment:
staging:
branch: master
commands:
- ./scripts/docs/update_docs.sh
version: 2
jobs:
build:
working_directory: ~/ionic-native/
docker:
- image: node:7
steps:
- checkout
- restore_cache:
key: ionic-site-{{ .Branch }}
- run:
name: Prepare ionic-site repo
command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then
./scripts/docs/prepare.sh
fi
- save_cache:
key: ionic-site-{{ .Branch }}
paths:
- ~/ionic-site/
- restore_cache:
key: node_modules_{{ checksum "package.json" }}
- run:
name: Install node modules
command: npm i
- save_cache:
key: node_modules_{{ checksum "package.json" }}
paths:
- ~/ionic-native/node_modules/
- run:
name: Run tslint
command: npm run lint
- run: bash ./scripts/git/config.sh
- run:
name: Build changed plugins
command: node scripts/ci-tests.js
- run:
name: Run tests
command: npm test
- add_ssh_keys
- deploy:
name: Update docs
command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then
./scripts/docs/update_docs.sh
else
echo "We are on ${CIRCLE_BRANCH} branch, not going to update docs."
fi

View File

@@ -34,14 +34,16 @@ gulp.task('plugin:create', () => {
const src = flags.m ? './scripts/templates/wrap-min.tmpl':'./scripts/templates/wrap.tmpl',
pluginName = flags.n,
pluginNameSpaced = pluginName.replace(/(?!^)([A-Z])/g, ' $1');
spaced = pluginName.replace(/(?!^)([A-Z])/g, ' $1'),
kebabCase = _.kebabCase(pluginName);
return gulp.src(src)
.pipe(replace('$PluginName', pluginName))
.pipe(replace('$Plugin_Name', pluginNameSpaced))
.pipe(replace('$pluginName', _.lowerFirst(pluginName)))
.pipe(replace('{{ PluginName }}', pluginName))
.pipe(replace('{{ Plugin_Name }}', spaced))
.pipe(replace('{{ pluginName }}', _.lowerFirst(pluginName)))
.pipe(replace('{{ plugin-name }}', kebabCase))
.pipe(rename('index.ts'))
.pipe(gulp.dest('./src/@ionic-native/plugins/' + _.kebabCase(pluginName)));
.pipe(gulp.dest('./src/@ionic-native/plugins/' + kebabCase));
} else {
console.log("Usage is: gulp plugin:create -n PluginName");

55
karma.conf.js Normal file
View File

@@ -0,0 +1,55 @@
"use strict";
module.exports = config => {
const conf = {
frameworks: [
'jasmine',
'karma-typescript'
],
plugins: [
'karma-typescript',
'karma-jasmine',
'karma-phantomjs-launcher'
],
preprocessors: {
'src/**/*.ts': ['karma-typescript']
},
karmaTypescriptConfig: {
bundlerOptions: {
entrypoints: /\.spec\.ts$/,
transforms: [
require("karma-typescript-es6-transform")()
]
},
compilerOptions: {
lib: ['es2015', 'dom'],
paths: {
"@ionic-native/core": ["./src/@ionic-native/core"]
},
baseUrl: '.'
}
},
files: [
{ pattern: 'src/**/*.ts', included: true, watched: true }
],
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.INFO,
autoWatch: true,
browsers: [
'PhantomJS'
],
singleRun: false
};
config.set(conf);
};

5567
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,17 +1,22 @@
{
"name": "ionic-native",
"version": "3.4.0",
"version": "3.11.0",
"description": "Native plugin wrappers for Cordova and Ionic with TypeScript, ES6+, Promise and Observable support",
"homepage": "https://ionicframework.com/",
"author": "Ionic Team <hi@ionic.io> (https://ionic.io)",
"license": "MIT",
"devDependencies": {
"@angular/compiler": "2.4.8",
"@angular/compiler-cli": "2.4.8",
"@angular/core": "2.4.8",
"@angular/compiler": "4.1.3",
"@angular/compiler-cli": "4.1.3",
"@angular/core": "4.1.3",
"@types/cordova": "0.0.34",
"@types/jasmine": "^2.5.47",
"@types/node": "^7.0.18",
"canonical-path": "0.0.2",
"child-process-promise": "2.2.0",
"conventional-changelog-cli": "1.2.0",
"child-process-promise": "2.2.1",
"conventional-changelog-cli": "1.3.1",
"cpr": "2.0.2",
"cz-conventional-changelog": "1.2.0",
"cz-conventional-changelog": "2.0.0",
"decamelize": "1.2.0",
"dgeni": "0.4.7",
"dgeni-packages": "0.16.10",
@@ -21,18 +26,25 @@
"gulp-rename": "1.2.2",
"gulp-replace": "0.5.4",
"gulp-tslint": "6.1.2",
"jasmine-core": "^2.6.1",
"karma": "^1.7.0",
"karma-cli": "^1.0.1",
"karma-jasmine": "^1.1.0",
"karma-phantomjs-launcher": "^1.0.4",
"karma-typescript": "^3.0.1",
"karma-typescript-es6-transform": "^1.0.0",
"lodash": "4.17.4",
"minimist": "1.1.3",
"minimist": "1.2.0",
"node-html-encoder": "0.0.2",
"q": "1.4.1",
"q": "1.5.0",
"queue": "4.2.1",
"rimraf": "2.5.4",
"rxjs": "5.0.1",
"rimraf": "2.6.1",
"rxjs": "5.1.1",
"semver": "5.3.0",
"tslint": "3.15.1",
"tslint-ionic-rules": "0.0.7",
"typescript": "2.0.09",
"zone.js": "0.7.2"
"tslint-ionic-rules": "0.0.8",
"typescript": "2.3.3",
"zone.js": "^0.8.11"
},
"scripts": {
"start": "npm run test:watch",
@@ -44,7 +56,16 @@
"shipit": "npm run build && gulp readmes && npm run npmpub",
"npmpub": "node scripts/build/publish.js",
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
"postchangelog": "git commit -am \"chore(): update changelog\""
"postchangelog": "git commit -am \"chore(): update changelog\"",
"test": "karma start karma.conf.js --single-run",
"test:watch": "karma start karma.conf.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/ionic-team/ionic-native.git"
},
"bugs": {
"url": "https://github.com/ionic-team/ionic-native/issues"
},
"config": {
"commitizen": {

View File

@@ -19,7 +19,7 @@ const ROOT = path.resolve(path.join(__dirname, '../../')), // root ionic-native
// dependency versions
const ANGULAR_VERSION = '*',
RXJS_VERSION = '^5.0.1',
MIN_CORE_VERSION = '^3.1.0',
MIN_CORE_VERSION = '^3.6.0',
IONIC_NATIVE_VERSION = require(path.resolve(ROOT, 'package.json')).version;
// package dependencies
@@ -40,7 +40,6 @@ PLUGIN_PACKAGE_JSON.peerDependencies = PLUGIN_PEER_DEPS;
console.log('Making new TMP directory');
fs.mkdirpSync(BUILD_TMP);
// Prepare and copy the core module's package.json
console.log('Preparing core module package.json');
CORE_PACKAGE_JSON.version = IONIC_NATIVE_VERSION;
@@ -51,6 +50,21 @@ fs.writeJsonSync(path.resolve(BUILD_CORE_DIST, 'package.json'), CORE_PACKAGE_JSO
// Fetch a list of the plugins
const PLUGINS = fs.readdirSync(PLUGINS_PATH);
// Build specific list of plugins to build from arguments, if any
let pluginsToBuild = process.argv.slice(2);
let ignoreErrors = false;
let errors = [];
const index = pluginsToBuild.indexOf('ignore-errors');
if (index > -1) {
ignoreErrors = true;
pluginsToBuild.splice(index, 1);
console.log('Build will continue even if errors were thrown. Errors will be printed when build finishes.');
}
if (!pluginsToBuild.length) {
pluginsToBuild = PLUGINS;
}
// Create a queue to process tasks
const QUEUE = queue({
@@ -98,10 +112,16 @@ const addPluginToQueue = pluginName => {
exec(`${ROOT}/node_modules/.bin/ngc -p ${tsConfigPath}`, (err, stdout, stderr) => {
if (err) {
// oops! something went wrong.
callback(`\n\nBuilding ${pluginName} failed.`);
console.log(err);
return;
if (!ignoreErrors) {
// oops! something went wrong.
console.log(err);
callback(`\n\nBuilding ${pluginName} failed.`);
return;
} else {
errors.push(err);
}
}
// we're done with this plugin!
@@ -116,12 +136,22 @@ const addPluginToQueue = pluginName => {
};
PLUGINS.forEach(addPluginToQueue);
pluginsToBuild.forEach(addPluginToQueue);
QUEUE.start((err) => {
if (err) {
console.log('Error building plugins. ', err);
console.log('Error building plugins.');
console.log(err);
process.stderr.write(err);
process.exit(1);
} else if (errors.length) {
errors.forEach(e => {
console.log(e.message) && console.log('\n');
process.stderr.write(err);
});
console.log('Build complete with errors');
process.exit(1);
} else {
console.log('Done processing plugins!');
}

View File

@@ -9,6 +9,6 @@
"peerDependencies": {},
"repository": {
"type": "git",
"url": "https://github.com/driftyco/ionic-native.git"
"url": "https://github.com/ionic-team/ionic-native.git"
}
}

View File

@@ -9,6 +9,6 @@
"peerDependencies": {},
"repository": {
"type": "git",
"url": "https://github.com/driftyco/ionic-native.git"
"url": "https://github.com/ionic-team/ionic-native.git"
}
}

View File

@@ -13,7 +13,8 @@
"skipLibCheck": true,
"lib": ["es2015", "dom"],
"sourceMap": true,
"inlineSources": true
"inlineSources": true,
"noImplicitAny": true
},
"files": [
"../../src/@ionic-native/core/index.ts"

View File

@@ -16,7 +16,8 @@
"skipLibCheck": true,
"lib": ["es2015", "dom"],
"sourceMap": true,
"inlineSources": true
"inlineSources": true,
"noImplicitAny": true
},
"files": []
}

65
scripts/ci-tests.js Normal file
View File

@@ -0,0 +1,65 @@
const exec = require('child-process-promise').exec;
let diff;
exec(`git branch | grep \\* | cut -d ' ' -f2`)
.then(output => {
if (output.stderr) {
return Promise.reject(output.stderr);
}
const branch = output.stdout.trim();
if (branch !== 'master') {
console.log('Merging master branch in ...');
// not on master branch
// let's test the changes that were made
return exec(`git merge origin master`);
}
})
.then((output) => {
if (output && output.stderr) {
return Promise.reject(output.stderr);
}
console.log('Checking for differences ...');
return exec(`git diff --name-status origin master`)
})
.then((output) => {
if (output && output.stderr) {
return Promise.reject(output.stderr);
}
diff = output.stdout;
diff = diff.replace(/A\s+/g, '');
diff = diff.match(/src\/@ionic-native\/plugins\/([a-zA-Z0-9\-]+)\/index\.ts/g);
if (!diff) process.exit();
console.log(`${ diff.length } plugins were modified. We will now build them to verify they still work.`);
return exec('npm run build:core --silent');
})
.then((output) => {
if (output && output.stderr) {
return Promise.reject(output.stderr);
}
console.log('Built core library successfully ...');
console.log('Building plugins ...');
diff = diff.map(text => text.replace('src/@ionic-native/plugins/', '').replace('/index.ts', ''));
return exec(`npm run build:modules ${diff.join(' ')} --silent`);
})
.then((output) => {
if (output && output.stderr) {
console.log(output.stderr);
process.exit(1);
}
console.log(output.stdout);
process.exit();
})
.catch(e => {
console.log(e.message || e);
process.exit(1);
});

View File

@@ -1,6 +1,6 @@
{
"sitePath": "../ionic-site",
"v2DocsDir": "docs/v2/native",
"docsDest": "../ionic-site/content/docs/v2/native",
"v2DocsDir": "docs/native",
"docsDest": "../ionic-site/content/docs/native",
"pluginDir": "dist/@ionic-native"
}

View File

@@ -30,7 +30,7 @@ function run {
git pull origin master
fi
git rm -rf content/docs/v2/native/*/ || true
git rm -rf content/docs/native/*/ || true
}

View File

@@ -19,7 +19,7 @@ module.exports = function jekyll(renderDocsProcessor) {
docs.forEach(doc => {
doc.outputPath = doc.outputPath.toLowerCase().replace(/\s/g, '-');
doc.URL = doc.outputPath.replace('docs/v2//', 'docs/v2/')
doc.URL = doc.outputPath.replace('docs//', 'docs/')
.replace('/index.md', '')
.replace('content/', '');
});
@@ -29,7 +29,7 @@ module.exports = function jekyll(renderDocsProcessor) {
docType: 'nativeMenu',
id: 'native_menu',
template: 'native_menu.template.html',
outputPath: 'content/_includes/v2_fluid/native_menu.html'
outputPath: 'content/_includes/fluid/native_menu.html'
});
return docs;

View File

@@ -1,5 +1,5 @@
---
layout: "v2_fluid/docs_base"
layout: "fluid/docs_base"
version: "<$ version.current.name $>"
versionHref: "<$ version.current.href.replace('content/','') $>"
path: "<$ doc.path $>"
@@ -44,7 +44,7 @@ docType: "<$ doc.docType $>"
<@- endmacro -@>
<@- macro githubViewLink(doc) -@>
<a href="https://github.com/driftyco/ionic-native/tree/master/<$ doc.fileInfo.relativePath $>#L<$ doc.location.start.line+1 $>-L<$ doc.location.end.line+1 $>"><$ doc.fileInfo.relativePath $> (line <$ doc.location.start.line+1 $>)</a>
<a href="https://github.com/ionic-team/ionic-native/tree/master/<$ doc.fileInfo.relativePath $>#L<$ doc.location.start.line+1 $>-L<$ doc.location.end.line+1 $>"><$ doc.fileInfo.relativePath $> (line <$ doc.location.start.line+1 $>)</a>
<@- endmacro -@>
<@- macro paramTable(params, isDirective) -@>
@@ -149,7 +149,7 @@ docType: "<$ doc.docType $>"
<@- endif -@>
</h1>
<a class="improve-v2-docs" href="http://github.com/driftyco/ionic-native/edit/master/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/') $>#L<$ doc.location.start.line $>">
<a class="improve-v2-docs" href="http://github.com/ionic-team/ionic-native/edit/master/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/') $>#L<$ doc.location.start.line $>">
Improve this doc
</a>
@@ -164,18 +164,25 @@ docType: "<$ doc.docType $>"
</p>
<@ endif @>
<# --- Install commands --- #>
<pre><code class="nohighlight">$ <@ if prop.install @><$ prop.install $><@ else @>ionic plugin add <$ prop.plugin $><@ endif @>
$ npm install --save @ionic-native/<$ doc.npmId $>
</code></pre>
<# --- Plugin description --- #>
<$ doc.description | marked $>
<p>Repo:
<a href="<$ prop.repo $>">
<$ prop.repo $>
</a>
</p>
<# --- Plugin description --- #>
<$ doc.description | marked $>
<# --- Install commands --- #>
<h2>Installation</h2>
<ol class="installation">
<li>Install the Cordova and Ionic Native plugins:<br>
<pre><code class="nohighlight">$ <@ if prop.install @><$ prop.install $><@ else @>ionic cordova plugin add <$ prop.plugin $><@ endif @>
$ npm install --save @ionic-native/<$ doc.npmId $>
</code></pre>
</li>
<li><a href="https://ionicframework.com/docs/native/#Add_Plugins_to_Your_App_Module">Add this plugin to your app's module</a></li>
</ol>
<# --- Plugin supported platforms --- #>
<@ if prop.platforms @>

View File

@@ -1,8 +1,8 @@
<li class="capitalize {% if page.id == 'overview' %}active{% endif %}">
<a href="/docs/v2/native/">Overview</a>
<a href="/docs/native/">Overview</a>
</li>
<li class="capitalize {% if page.id == 'mocking' %}active{% endif %}">
<a href="/docs/v2/native/browser.html">Browser Usage</a>
<a href="/docs/native/browser.html">Browser Usage</a>
</li>
<@- for doc in docs @><@ if doc.URL and doc.private != true and doc.beta != true @>
<li class="capitalize {% if page.id == '<$ doc.name|lower|dashify $>' %}active{% endif %}">

View File

@@ -1,4 +1,4 @@
<a style="float:right;font-size:12px;" href="http://github.com/driftyco/ionic-native/edit/master/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/') $>#L<$ doc.location.start.line $>">
<a style="float:right;font-size:12px;" href="http://github.com/ionic-team/ionic-native/edit/master/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/') $>#L<$ doc.location.start.line $>">
Improve this doc
</a>
@@ -16,11 +16,11 @@
<@ for prop in doc.decorators[0].argumentInfo @>
```
$ <@ if prop.install @><$ prop.install $><@ else @>ionic plugin add <$ prop.plugin $><@ endif @>
$ <@ if prop.install @><$ prop.install $><@ else @>ionic cordova plugin add <$ prop.plugin $><@ endif @>
$ npm install --save @ionic-native/<$ doc.npmId $>
```
## [Usage Documentation](https://ionicframework.com/docs/v2/native/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/')|replace('index.ts','')|replace('src/@ionic-native/plugins/','') $>)
## [Usage Documentation](https://ionicframework.com/docs/native/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/')|replace('index.ts','')|replace('src/@ionic-native/plugins/','') $>)
Plugin Repo: [<$ prop.repo $>](<$ prop.repo $>)

View File

@@ -31,11 +31,11 @@ function run {
if [ $CHANGED -eq 0 ];
then
echo "-- No changes detected for the following commit, docs not updated."
echo "https://github.com/driftyco/$CIRCLE_PROJECT_REPONAME/commit/$CIRCLE_SHA1"
echo "https://github.com/ionic-team/$CIRCLE_PROJECT_REPONAME/commit/$CIRCLE_SHA1"
else
git config --global user.email "hi@ionicframework.com"
git config --global user.name "Ionitron"
git commit -am "Automated build of native docs driftyco/$CIRCLE_PROJECT_REPONAME@$CIRCLE_SHA1"
git commit -am "Automated build of native docs ionic-team/$CIRCLE_PROJECT_REPONAME@$CIRCLE_SHA1"
# in case a different commit was pushed to ionic-site during doc/demo gen,
# try to rebase around it before pushing
git fetch

View File

@@ -18,12 +18,12 @@ function run {
if [ -z "$CHANGED" ];
then
echo "-- No changes detected for the following commit, docs not updated."
echo "https://github.com/driftyco/$CIRCLE_PROJECT_REPONAME/commit/$CIRCLE_SHA1"
echo "https://github.com/ionic-team/$CIRCLE_PROJECT_REPONAME/commit/$CIRCLE_SHA1"
else
git config --global user.email "hi@ionicframework.com"
git config --global user.name "Ionitron"
git add -A
git commit -am "Automated build of native readmes for driftyco/$CIRCLE_PROJECT_REPONAME@$CIRCLE_SHA1"
git commit -am "Automated build of native readmes for ionic-team/$CIRCLE_PROJECT_REPONAME@$CIRCLE_SHA1"
# in case a different commit was pushed to ionic-site during doc/demo gen,
# try to rebase around it before pushing
git fetch

View File

@@ -21,7 +21,7 @@ function run {
git config --global user.email "hi@ionicframework.com"
git config --global user.name "Ionitron"
git clone git@github.com:driftyco/$REPOSITORY.git $DIRECTORY $ARGS
git clone git@github.com:ionic-team/$REPOSITORY.git $DIRECTORY $ARGS
cd $DIRECTORY
git fetch origin --tags
cd ../

2
scripts/git/config.sh Normal file
View File

@@ -0,0 +1,2 @@
git config --global user.email "hi@ionicframework.com"
git config --global user.name "Ionitron"

View File

@@ -1,16 +1,16 @@
import { Plugin } from '@ionic-native/core';
import { Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
* @name $Plugin_Name
* @name {{ Plugin_Name }}
* @description
*
* @usage
* ```
* import { $PluginName } from 'ionic-native';
* ```typescript
* import { {{ PluginName }} } from '@ionic-native/{{ plugin-name }}';
*
*
* constructor(private $pluginName: $PluginName) { }
* constructor(private {{ pluginName }}: {{ PluginName }}) { }
*
* ...
*
@@ -18,13 +18,13 @@ import { Injectable } from '@angular/core';
* ```
*/
@Plugin({
pluginName: '$PluginName',
pluginName: '{{ PluginName }}',
plugin: '',
pluginRef: '',
repo: '',
platforms: []
})
@Injectable()
export class $PluginName {
export class {{ PluginName }} extends IonicNativePlugin {
}

View File

@@ -10,33 +10,33 @@
* - Remove this note
*
*/
import { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
/**
* @name $Plugin_Name
* @name {{ Plugin_Name }}
* @description
* This plugin does something
*
* @usage
* ```
* import { $PluginName } from 'ionic-native';
* ```typescript
* import { {{ PluginName }} } from '@ionic-native/{{ plugin-name }}';
*
*
* constructor(private $pluginName: $PluginName) { }
* constructor(private {{ pluginName }}: {{ PluginName }}) { }
*
* ...
*
*
* this.$pluginName.functionName('Hello', 123)
* this.{{ pluginName }}.functionName('Hello', 123)
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
* ```
*/
@Plugin({
pluginName: '$PluginName',
pluginName: '{{ PluginName }}',
plugin: '', // npm package name, example: cordova-plugin-camera
pluginRef: '', // the variable reference to call the plugin, example: navigator.geolocation
repo: '', // the github repository URL for the plugin
@@ -44,7 +44,7 @@ import { Observable } from 'rxjs/Observable';
install: '', // OPTIONAL install command, in case the plugin requires variables
})
@Injectable()
export class $PluginName {
export class {{ PluginName }} extends IonicNativePlugin {
/**
* This function does something

View File

@@ -1,5 +1,3 @@
declare var window;
export function checkReady() {
const DEVICE_READY_TIMEOUT = 5000;
@@ -16,7 +14,7 @@ export function checkReady() {
});
setTimeout(() => {
if (!didFireReady && window.cordova) {
if (!didFireReady && !!window.cordova) {
console.warn(`Ionic Native: deviceready did not fire within ${DEVICE_READY_TIMEOUT}ms. This can happen when plugins are in an inconsistent state. Try removing plugins from plugins/ and reinstalling them.`);
}
}, DEVICE_READY_TIMEOUT);

View File

@@ -0,0 +1,239 @@
import 'core-js';
import { Plugin, Cordova, CordovaProperty, CordovaCheck, CordovaInstance, InstanceProperty } from './decorators';
import { IonicNativePlugin } from './ionic-native-plugin';
import { ERR_CORDOVA_NOT_AVAILABLE, ERR_PLUGIN_NOT_INSTALLED } from './plugin';
declare const window: any;
class TestObject {
constructor(public _objectInstance: any) {}
@InstanceProperty
name: string;
@CordovaInstance({ sync: true })
pingSync(): string { return; }
@CordovaInstance()
ping(): Promise<any> { return; }
}
@Plugin({
pluginName: 'TestPlugin',
pluginRef: 'testPlugin',
repo: '',
plugin: 'cordova-plugin-my-plugin',
platforms: ['Android', 'iOS']
})
class TestPlugin extends IonicNativePlugin {
@CordovaProperty
name: string;
@Cordova({ sync: true })
pingSync(): string { return; }
@Cordova()
ping(): Promise<string> { return; }
@CordovaCheck()
customPing(): Promise<string> {
return Promise.resolve('pong');
}
create(): TestObject {
return new TestObject(TestPlugin.getPlugin().create());
}
}
function definePlugin() {
(window as any).testPlugin = {
name: 'John Smith',
ping: (success: Function, error: Function) => success('pong'),
pingSync: () => 'pong',
create: function TestObject() {
this.pingSync = () => 'pong';
this.ping = (success: Function, error: Function) => success('pong');
this.name = 'John Smith';
return this;
}
};
}
describe('Regular Decorators', () => {
let plugin: TestPlugin;
beforeEach(() => {
plugin = new TestPlugin();
definePlugin();
});
describe('Plugin', () => {
it('should set pluginName', () => {
expect(TestPlugin.getPluginName()).toEqual('TestPlugin');
});
it('should set pluginRef', () => {
expect(TestPlugin.getPluginRef()).toEqual('testPlugin');
});
it('should return original plugin object', () => {
expect(TestPlugin.getPlugin()).toEqual(window.testPlugin);
});
it('should return supported platforms', () => {
expect(TestPlugin.getSupportedPlatforms()).toEqual(['Android', 'iOS']);
});
});
describe('Cordova', () => {
it('should do a sync function', () => {
expect(plugin.pingSync()).toEqual('pong');
});
it('should do an async function', (done: Function) => {
plugin.ping()
.then(res => {
expect(res).toEqual('pong');
done();
})
.catch(e => {
expect(e).toBeUndefined();
done('Method should have resolved');
});
});
it('should throw plugin_not_installed error', (done: Function) => {
delete window.testPlugin;
window.cordova = true;
expect(<any>plugin.pingSync()).toEqual(ERR_PLUGIN_NOT_INSTALLED);
plugin.ping()
.catch(e => {
expect(e).toEqual(ERR_PLUGIN_NOT_INSTALLED.error);
delete window.cordova;
done();
});
});
it('should throw cordova_not_available error', (done: Function) => {
delete window.testPlugin;
expect(<any>plugin.pingSync()).toEqual(ERR_CORDOVA_NOT_AVAILABLE);
plugin.ping()
.catch(e => {
expect(e).toEqual(ERR_CORDOVA_NOT_AVAILABLE.error);
done();
});
});
});
describe('CordovaProperty', () => {
it('should return property value', () => {
expect(plugin.name).toEqual('John Smith');
});
it('should set property value', () => {
plugin.name = 'value2';
expect(plugin.name).toEqual('value2');
});
});
describe('CordovaCheck', () => {
it('should run the method when plugin exists', (done) => {
plugin.customPing()
.then(res => {
expect(res).toEqual('pong');
done();
});
});
it('shouldnt run the method when plugin doesnt exist', (done) => {
delete window.testPlugin;
window.cordova = true;
plugin.customPing()
.catch(e => {
expect(e).toEqual(ERR_PLUGIN_NOT_INSTALLED.error);
done();
});
});
});
});
describe('Instance Decorators', () => {
let instance: TestObject,
plugin: TestPlugin;
beforeEach(() => {
definePlugin();
plugin = new TestPlugin();
instance = plugin.create();
});
describe('Instance plugin', () => {
});
describe('CordovaInstance', () => {
it('should call instance async method', (done) => {
instance.ping()
.then(r => {
expect(r).toEqual('pong');
done();
});
});
it('should call instance sync method', () => {
expect(instance.pingSync()).toEqual('pong');
});
it('shouldnt call instance method when _objectInstance is undefined', () => {
delete instance._objectInstance;
instance.ping()
.then(r => {
expect(r).toBeUndefined();
})
.catch(e => {
expect(e).toBeUndefined();
});
});
});
describe('InstanceProperty', () => {
it('should return property value', () => {
expect(instance.name).toEqual('John Smith');
});
it('should set property value', () => {
instance.name = 'John Cena';
expect(instance.name).toEqual('John Cena');
});
});
});

View File

@@ -32,6 +32,8 @@ export interface PluginConfig {
* Supported platforms
*/
platforms?: string[];
[key: string]: any;
}
export interface CordovaOptions {
@@ -127,13 +129,14 @@ export function InstanceCheck(opts: CordovaCheckOptions = {}) {
if (opts.sync) {
return;
} else if (opts.observable) {
return new Observable<any>(() => {});
return new Observable<any>(() => { });
}
return getPromise(() => {});
return getPromise(() => { });
}
}
},
enumerable: true
};
};
}
@@ -157,7 +160,8 @@ export function CordovaCheck(opts: CordovaCheckOptions = {}) {
}
return Promise.reject(check && check.error);
}
}
},
enumerable: true
};
};
}
@@ -182,12 +186,12 @@ export function CordovaCheck(opts: CordovaCheckOptions = {}) {
* }
* ```
*/
export function Plugin(config: PluginConfig) {
return function(cls) {
export function Plugin(config: PluginConfig): ClassDecorator {
return function(cls: any) {
// Add these fields to the class
for (let k in config) {
cls[k] = config[k];
for (let prop in config) {
cls[prop] = config[prop];
}
cls['installed'] = function(printWarning?: boolean) {
@@ -237,7 +241,8 @@ export function Cordova(opts: CordovaOptions = {}) {
return {
value: function(...args: any[]) {
return wrap(this, methodName, opts).apply(this, args);
}
},
enumerable: true
};
};
}
@@ -252,7 +257,8 @@ export function CordovaInstance(opts: any = {}) {
return {
value: function(...args: any[]) {
return wrapInstance(this, methodName, opts).apply(this, args);
}
},
enumerable: true
};
};
}
@@ -290,10 +296,10 @@ export function CordovaProperty(target: any, key: string) {
export function InstanceProperty(target: any, key: string) {
Object.defineProperty(target, key, {
enumerable: true,
get: function(){
get: function() {
return this._objectInstance[key];
},
set: function(value){
set: function(value) {
this._objectInstance[key] = value;
}
});
@@ -310,7 +316,8 @@ export function CordovaFunctionOverride(opts: any = {}) {
return {
value: function(...args: any[]) {
return overrideFunction(this, methodName, opts);
}
},
enumerable: true
};
};
}
@@ -346,7 +353,8 @@ export function CordovaFiniteObservable(opts: CordovaFiniteObservableOptions = {
wrappedSubscription.unsubscribe();
};
});
}
},
enumerable: true
};
};
}

View File

@@ -1,3 +1,4 @@
export * from './plugin';
export * from './decorators';
export * from './util';
export * from './ionic-native-plugin';

View File

@@ -0,0 +1,46 @@
export class IonicNativePlugin {
static pluginName: string;
static pluginRef: string;
static plugin: string;
static repo: string;
static platforms: string[];
static install: string;
/**
* Returns a boolean that indicates whether the plugin is installed
* @return {boolean}
*/
static installed(): boolean { return false; }
/**
* Returns the original plugin object
*/
static getPlugin(): any { }
/**
* Returns the plugin's name
*/
static getPluginName(): string { return; }
/**
* Returns the plugin's reference
*/
static getPluginRef(): string { return; }
/**
* Returns the plugin's install name
*/
static getPluginInstallName(): string { return; }
/**
* Returns the plugin's supported platforms
*/
static getSupportedPlatforms(): string[] { return; }
}

View File

@@ -1,4 +1,4 @@
import { get, getPlugin, getPromise, cordovaWarn, pluginWarn } from './util';
import { getPlugin, getPromise, cordovaWarn, pluginWarn } from './util';
import { checkReady } from './bootstrap';
import { CordovaOptions } from './decorators';
@@ -7,8 +7,11 @@ import 'rxjs/add/observable/fromEvent';
checkReady();
declare var window;
declare var Promise;
// declare const window;
// declare var Promise;
export const ERR_CORDOVA_NOT_AVAILABLE = { error: 'cordova_not_available' };
export const ERR_PLUGIN_NOT_INSTALLED = { error: 'plugin_not_installed' };
/**
@@ -16,8 +19,8 @@ declare var Promise;
* @return {boolean | { error: string } }
* @private
*/
export function checkAvailability(pluginRef: string, methodName?: string, pluginName?: string);
export function checkAvailability(pluginObj: any, methodName?: string, pluginName?: string);
export function checkAvailability(pluginRef: string, methodName?: string, pluginName?: string): boolean | { error: string };
export function checkAvailability(pluginObj: any, methodName?: string, pluginName?: string): boolean | { error: string };
export function checkAvailability(plugin: any, methodName?: string, pluginName?: string): boolean | { error: string } {
let pluginRef, pluginInstance, pluginPackage;
@@ -32,18 +35,14 @@ export function checkAvailability(plugin: any, methodName?: string, pluginName?:
pluginInstance = getPlugin(pluginRef);
if (!pluginInstance || (!!methodName && pluginInstance[methodName] === 'undefined')) {
if (!pluginInstance || (!!methodName && typeof pluginInstance[methodName] === 'undefined')) {
if (!window.cordova) {
cordovaWarn(pluginName, methodName);
return {
error: 'cordova_not_available'
};
return ERR_CORDOVA_NOT_AVAILABLE;
}
pluginWarn(pluginName, pluginPackage, methodName);
return {
error: 'plugin_not_installed'
};
return ERR_PLUGIN_NOT_INSTALLED;
}
return true;
@@ -54,7 +53,7 @@ export function checkAvailability(plugin: any, methodName?: string, pluginName?:
* @private
*/
export function instanceAvailability(pluginObj: any, methodName?: string): boolean {
return pluginObj._objectInstance && (!methodName || pluginObj._objectInstance[methodName] !== 'undefined');
return pluginObj._objectInstance && (!methodName || typeof pluginObj._objectInstance[methodName] !== 'undefined');
}
function setIndex(args: any[], opts: any = {}, resolve?: Function, reject?: Function): any {
@@ -69,7 +68,7 @@ function setIndex(args: any[], opts: any = {}, resolve?: Function, reject?: Func
args.unshift(reject);
args.unshift(resolve);
} else if (opts.callbackStyle === 'node') {
args.push((err, result) => {
args.push((err: any, result: any) => {
if (err) {
reject(err);
} else {
@@ -135,8 +134,8 @@ function callCordovaPlugin(pluginObj: any, methodName: string, args: any[], opts
}
function wrapPromise(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
let pluginResult, rej;
const p = getPromise((resolve, reject) => {
let pluginResult: any, rej: Function;
const p = getPromise((resolve: Function, reject: Function) => {
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject);
rej = reject;
});
@@ -145,13 +144,13 @@ function wrapPromise(pluginObj: any, methodName: string, args: any[], opts: any
// to error
if (pluginResult && pluginResult.error) {
p.catch(() => { });
rej(pluginResult.error);
typeof rej === 'function' && rej(pluginResult.error);
}
return p;
}
function wrapOtherPromise(pluginObj: any, methodName: string, args: any[], opts: any= {}) {
return getPromise((resolve, reject) => {
function wrapOtherPromise(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
return getPromise((resolve: Function, reject: Function) => {
const pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts);
if (pluginResult) {
if (pluginResult.error) {
@@ -178,11 +177,11 @@ function wrapObservable(pluginObj: any, methodName: string, args: any[], opts: a
if (opts.clearWithArgs) {
return callCordovaPlugin(pluginObj, opts.clearFunction, args, opts, observer.next.bind(observer), observer.error.bind(observer));
}
return get(window, pluginObj.constructor.getPluginRef())[opts.clearFunction].call(pluginObj, pluginResult);
return callCordovaPlugin(pluginObj, opts.clearFunction, []);
}
} catch (e) {
console.warn('Unable to clear the previous observable watch for', pluginObj.constructor.getPluginName(), methodName);
console.error(e);
console.warn(e);
}
};
});
@@ -225,7 +224,7 @@ export function overrideFunction(pluginObj: any, methodName: string, args: any[]
if (availabilityCheck === true) {
const pluginInstance = getPlugin(pluginObj.constructor.getPluginRef());
pluginInstance[methodName] = observer.next.bind(observer);
return () => pluginInstance[methodName] = () => {};
return () => pluginInstance[methodName] = () => { };
} else {
observer.error(availabilityCheck);
observer.complete();
@@ -239,7 +238,7 @@ export function overrideFunction(pluginObj: any, methodName: string, args: any[]
* @private
*/
export const wrap = function(pluginObj: any, methodName: string, opts: CordovaOptions = {}) {
return (...args) => {
return (...args: any[]) => {
if (opts.sync) {
// Sync doesn't wrap the plugin with a promise or observable, it returns the result as-is
return callCordovaPlugin(pluginObj, methodName, args, opts);
@@ -259,7 +258,7 @@ export const wrap = function(pluginObj: any, methodName: string, opts: CordovaOp
* @private
*/
export function wrapInstance(pluginObj: any, methodName: string, opts: any = {}) {
return (...args) => {
return (...args: any[]) => {
if (opts.sync) {
return callInstance(pluginObj, methodName, args, opts);
@@ -277,37 +276,30 @@ export function wrapInstance(pluginObj: any, methodName: string, opts: any = {})
return () => {
try {
if (opts.clearWithArgs) {
return pluginObj._objectInstance[opts.clearFunction].apply(pluginObj._objectInstance, args);
return callInstance(pluginObj, opts.clearFunction, args, opts, observer.next.bind(observer), observer.error.bind(observer));
}
return pluginObj._objectInstance[opts.clearFunction].call(pluginObj, pluginResult);
return callInstance(pluginObj, opts.clearFunction, []);
} catch (e) {
console.warn('Unable to clear the previous observable watch for', pluginObj.constructor.getPluginName(), methodName);
console.error(e);
console.warn(e);
}
};
});
} else if (opts.otherPromise) {
return getPromise((resolve, reject) => {
return getPromise((resolve: Function, reject: Function) => {
let result = callInstance(pluginObj, methodName, args, opts, resolve, reject);
if (result && !result.error) {
if (result && !!result.then) {
result.then(resolve, reject);
} else {
reject();
}
});
} else {
let pluginResult, rej;
const p = getPromise((resolve, reject) => {
pluginResult = callInstance(pluginObj, methodName, args, opts, resolve, reject);
rej = reject;
});
if (pluginResult && pluginResult.error) {
p.catch(() => { });
rej(pluginResult.error);
}
return p;
return getPromise((resolve: Function, reject: Function) => callInstance(pluginObj, methodName, args, opts, resolve, reject));
}
};

View File

@@ -1,27 +1,28 @@
declare var window: any;
declare const window: any;
/**
* @private
*/
export function get(obj, path) {
path = path.split('.');
for (let i = 0; i < path.length; i++) {
export const get = (element: Element | Window, path: string): any => {
const paths: string[] = path.split('.');
let obj: any = element;
for (let i: number = 0; i < paths.length; i++) {
if (!obj) { return null; }
obj = obj[path[i]];
obj = obj[paths[i]];
}
return obj;
}
};
/**
* @private
*/
export function getPromise(cb) {
export const getPromise = (callback: Function): Promise<any> => {
const tryNativePromise = () => {
if (window.Promise) {
return new Promise((resolve, reject) => {
cb(resolve, reject);
callback(resolve, reject);
});
} else {
console.error('No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular 2 or on a recent browser.');
@@ -29,28 +30,28 @@ export function getPromise(cb) {
};
return tryNativePromise();
}
};
/**
* @private
* @param pluginRef
* @returns {null|*}
*/
export function getPlugin(pluginRef: string): any {
export const getPlugin = (pluginRef: string): any => {
return get(window, pluginRef);
};
/**
* @private
*/
export const pluginWarn = function(pluginName: string, plugin?: string, method?: string) {
export const pluginWarn = (pluginName: string, plugin?: string, method?: string): void => {
if (method) {
console.warn('Native: tried calling ' + pluginName + '.' + method + ', but the ' + pluginName + ' plugin is not installed.');
} else {
console.warn('Native: tried accessing the ' + pluginName + ' plugin but it\'s not installed.');
}
if (plugin) {
console.warn('Install the ' + pluginName + ' plugin: \'ionic plugin add ' + plugin + '\'');
console.warn('Install the ' + pluginName + ' plugin: \'ionic cordova plugin add ' + plugin + '\'');
}
};
@@ -59,7 +60,7 @@ export const pluginWarn = function(pluginName: string, plugin?: string, method?:
* @param pluginName
* @param method
*/
export const cordovaWarn = function(pluginName: string, method?: string) {
export const cordovaWarn = (pluginName: string, method?: string): void => {
if (method) {
console.warn('Native: tried calling ' + pluginName + '.' + method + ', but Cordova is not available. Make sure to include cordova.js or run in a device/simulator');
} else {

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, CordovaProperty } from '@ionic-native/core';
import { Cordova, Plugin, CordovaProperty, IonicNativePlugin } from '@ionic-native/core';
export interface ActionSheetOptions {
@@ -13,6 +13,11 @@ export interface ActionSheetOptions {
*/
title?: string;
/**
* The subtitle for the actionsheet (IOS only)
*/
subtitle?: string;
/**
* Theme to be used on Android
*/
@@ -43,6 +48,10 @@ export interface ActionSheetOptions {
*/
position?: number[];
/**
* Choose if destructive button will be the last
*/
destructiveButtonLast?: boolean;
}
/**
@@ -65,10 +74,12 @@ export interface ActionSheetOptions {
*
* const options: ActionSheetOptions = {
* title: 'What do you want with this image?',
* subtitle: 'Choose an action',
* buttonLabels: buttonLabels,
* addCancelButtonWithLabel: 'Cancel',
* addDestructiveButtonWithLabel: 'Delete',
* androidTheme: this.actionSheet.ANDROID_THEMES.THEME_HOLO_DARK
* androidTheme: this.actionSheet.ANDROID_THEMES.THEME_HOLO_DARK,
* destructiveButtonLast: true
* };
*
* this.actionSheet.show(options).then((buttonIndex: number) => {
@@ -83,10 +94,10 @@ export interface ActionSheetOptions {
plugin: 'cordova-plugin-actionsheet',
pluginRef: 'plugins.actionsheet',
repo: 'https://github.com/EddyVerbruggen/cordova-plugin-actionsheet',
platforms: ['Android', 'iOS', 'Windows Phone 8']
platforms: ['Android', 'iOS', 'Windows Phone 8', 'Browser']
})
@Injectable()
export class ActionSheet {
export class ActionSheet extends IonicNativePlugin {
@CordovaProperty
ANDROID_THEMES: {

View File

@@ -1,4 +1,4 @@
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';
@@ -65,12 +65,12 @@ export interface AdMobFreeRewardVideoConfig {
}
/**
* @name AdbMobFree
* @name AdMob Free
* @description
*
* @usage
* ```
* import { AdMobFree, AdMobFreeBannerConfig } from 'ionic-native';
* ```typescript
* import { AdMobFree, AdMobFreeBannerConfig } from '@ionic-native/admob-free';
*
*
* constructor(private admobFree: AdMobFree) { }
@@ -96,6 +96,14 @@ export interface AdMobFreeRewardVideoConfig {
*
*
* ```
* @interfaces
* AdMobFreeBannerConfig
* AdMobFreeInterstitialConfig
* AdMobFreeRewardVideoConfig
* @classes
* AdMobFreeBanner
* AdMobFreeInterstitial
* AdMobFreeRewardVideo
*/
@Plugin({
pluginName: 'AdMobFree',
@@ -105,12 +113,13 @@ export interface AdMobFreeRewardVideoConfig {
platforms: ['Android', 'iOS']
})
@Injectable()
export class AdMobFree {
export class AdMobFree extends IonicNativePlugin {
/**
* Convenience constructor to get event names
* Convenience object to get event names
* @type {Object}
*/
events = {
events: any = {
BANNER_LOAD: 'admob.banner.events.LOAD',
BANNER_LOAD_FAIL: 'admob.banner.events.LOAD_FAIL',
BANNER_OPEN: 'admob.banner.events.OPEN',
@@ -142,19 +151,19 @@ export class AdMobFree {
}
/**
*
* Returns the AdMobFreeBanner object
* @type {AdMobFreeBanner}
*/
banner: AdMobFreeBanner = new AdMobFreeBanner();
/**
*
* Returns the AdMobFreeInterstitial object
* @type {AdMobFreeInterstitial}
*/
interstitial: AdMobFreeInterstitial = new AdMobFreeInterstitial();
/**
*
* Returns the AdMobFreeRewardVideo object
* @type {AdMobFreeRewardVideo}
*/
rewardVideo: AdMobFreeRewardVideo = new AdMobFreeRewardVideo();
@@ -171,8 +180,6 @@ export class AdMobFree {
})
export class AdMobFreeBanner {
/**
* Update config.
* @param options
@@ -185,28 +192,28 @@ export class AdMobFreeBanner {
* Hide the banner.
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
hide(): Promise<any> { return; }
/**
* Create banner.
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
prepare(): Promise<any> { return; }
/**
* Remove the banner.
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
remove(): Promise<any> { return; }
/**
* Show the banner.
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
show(): Promise<any> { return; }
}
@@ -233,21 +240,21 @@ export class AdMobFreeInterstitial {
* Check if interstitial is ready
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
isReady(): Promise<any> { return; }
/**
* Prepare interstitial
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
prepare(): Promise<any> { return; }
/**
* Show the interstitial
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
show(): Promise<any> { return; }
}
@@ -274,21 +281,21 @@ export class AdMobFreeRewardVideo {
* Check if reward video is ready
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
isReady(): Promise<any> { return; }
/**
* Prepare reward video
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
prepare(): Promise<any> { return; }
/**
* Show the reward video
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
show(): Promise<any> { return; }
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export type AdSize = 'SMART_BANNER' | 'BANNER' | 'MEDIUM_RECTANGLE' | 'FULL_BANNER' | 'LEADERBOARD' | 'SKYSCRAPER' | 'CUSTOM';
@@ -66,6 +66,11 @@ export interface AdMobOptions {
*/
adExtras?: AdExtras;
/**
* License key for the plugin
*/
license?: any;
}
export interface AdExtras {
@@ -88,11 +93,14 @@ export interface AdExtras {
* @name AdMob
* @description
* Plugin for Google Ads, including AdMob / DFP (doubleclick for publisher) and mediations to other Ad networks.
*
* IMPORTANT NOTICE: this plugin takes a percentage out of your earnings if you profit more than $1,000. Read more about this on the plugin's repo. For a completely free alternative, see [AdMob Free](../admob-free).
* @usage
* ```typescript
* import { AdMob, AdMobOptions, AdSize, AdExtras } from '@ionic-native/ad-mob';
* import { AdMob } from '@ionic-native/admob';
* import { Platform } from 'ionic-angular';
*
* constructor(private admob: AdMob){}
* constructor(private admob: AdMob, private platform: Platform ) { }
*
* ionViewDidLoad() {
* this.admob.onAdDismiss()
@@ -100,7 +108,13 @@ export interface AdExtras {
* }
*
* onClick() {
* this.admob.prepareInterstitial('YOUR_ADID')
* let adId;
* if(this.platform.is('android')) {
* adId = 'YOUR_ADID_ANDROID';
* } else if (this.platform.is('ios')) {
* adId = 'YOUR_ADID_IOS';
* }
* this.admob.prepareInterstitial({adId: adId})
* .then(() => { this.admob.showInterstitial(); });
* }
*
@@ -118,7 +132,7 @@ export interface AdExtras {
platforms: ['Android', 'iOS', 'Windows Phone 8']
})
@Injectable()
export class AdMob {
export class AdMob extends IonicNativePlugin {
AD_POSITION: {
NO_CHANGE: number;
@@ -242,7 +256,8 @@ export class AdMob {
*/
@Cordova({
eventObservable: true,
event: 'onAdFailLoad'
event: 'onAdFailLoad',
element: document
})
onAdFailLoad(): Observable<any> { return; }
@@ -252,7 +267,8 @@ export class AdMob {
*/
@Cordova({
eventObservable: true,
event: 'onAdLoaded'
event: 'onAdLoaded',
element: document
})
onAdLoaded(): Observable<any> { return; }
@@ -262,7 +278,8 @@ export class AdMob {
*/
@Cordova({
eventObservable: true,
event: 'onAdPresent'
event: 'onAdPresent',
element: document
})
onAdPresent(): Observable<any> { return; }
@@ -272,7 +289,8 @@ export class AdMob {
*/
@Cordova({
eventObservable: true,
event: 'onAdLeaveApp'
event: 'onAdLeaveApp',
element: document
})
onAdLeaveApp(): Observable<any> { return; }
@@ -282,7 +300,8 @@ export class AdMob {
*/
@Cordova({
eventObservable: true,
event: 'onAdDismiss'
event: 'onAdDismiss',
element: document
})
onAdDismiss(): Observable<any> { return; }

View File

@@ -1,6 +1,8 @@
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
export interface AlipayOrder {
/**
* appId assigned by Alipay
@@ -67,7 +69,7 @@ export interface AlipayOrder {
* Requires Cordova plugin: `cordova-alipay-base`. For more info, please see the [Alipay plugin docs](https://github.com/xueron/cordova-alipay-base).
*
* @usage
* ```
* ```typescript
* import { Alipay, AlipayOrder } from '@ionic-native/alipay';
*
* constructor(private alipay: Alipay) {
@@ -99,11 +101,12 @@ export interface AlipayOrder {
plugin: 'cordova-alipay-base',
pluginRef: 'Alipay.Base',
repo: 'https://github.com/xueron/cordova-alipay-base',
platforms: ['Android', 'iOS'],
install: 'ionic plugin add https://github.com/xueron/cordova-alipay-base --variable APP_ID=your_app_id'
install: 'ionic cordova plugin add https://github.com/xueron/cordova-alipay-base --variable APP_ID=your_app_id',
installVariables: ['APP_ID'],
platforms: ['Android', 'iOS']
})
@Injectable()
export class Alipay {
export class Alipay extends IonicNativePlugin {
/**
* Open Alipay to perform App pay
* @param order { AlipayOrder } alipay options
@@ -112,4 +115,3 @@ export class Alipay {
@Cordova()
pay(order: AlipayOrder): Promise<any> { return; }
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface AFAAuthOptions {
@@ -102,7 +102,7 @@ export interface AFAEncryptResponse {
* This plugin will open a native dialog fragment prompting the user to authenticate using their fingerprint. If the device has a secure lockscreen (pattern, PIN, or password), the user may opt to authenticate using that method as a backup.
* @usage
* ```typescript
* import { AndroidFingerprintAuth, AFAAuthOptions } from '@ionic-native/android-fingerprint-auth';
* import { AndroidFingerprintAuth } from '@ionic-native/android-fingerprint-auth';
*
* constructor(private androidFingerprintAuth: AndroidFingerprintAuth) { }
*
@@ -114,18 +114,18 @@ export interface AFAEncryptResponse {
* if(result.isAvailable){
* // it is available
*
* this.androidFingerprintAuth.encrypt({ clientId: "myAppName", username: "myUsername", password: "myPassword" })
* this.androidFingerprintAuth.encrypt({ clientId: 'myAppName', username: 'myUsername', password: 'myPassword' })
* .then(result => {
* if (result.withFingerprint) {
* console.log("Successfully encrypted credentials.");
* console.log("Encrypted credentials: " + result.token);
* console.log('Successfully encrypted credentials.');
* console.log('Encrypted credentials: ' + result.token);
* } else if (result.withBackup) {
* console.log('Successfully authenticated with backup password!');
* } else console.log('Didn\'t authenticate!');
* })
* .catch(error => {
* if (error === "Cancelled") {
* console.log("Fingerprint authentication cancelled");
* if (error === this.androidFingerprintAuth.ERRORS.FINGERPRINT_CANCELLED) {
* console.log('Fingerprint authentication cancelled');
* } else console.error(error)
* });
*
@@ -148,7 +148,28 @@ export interface AFAEncryptResponse {
platforms: ['Android']
})
@Injectable()
export class AndroidFingerprintAuth {
export class AndroidFingerprintAuth extends IonicNativePlugin {
ERRORS: {
BAD_PADDING_EXCEPTION: 'BAD_PADDING_EXCEPTION',
CERTIFICATE_EXCEPTION: 'CERTIFICATE_EXCEPTION',
FINGERPRINT_CANCELLED: 'FINGERPRINT_CANCELLED',
FINGERPRINT_DATA_NOT_DELETED: 'FINGERPRINT_DATA_NOT_DELETED',
FINGERPRINT_ERROR: 'FINGERPRINT_ERROR',
FINGERPRINT_NOT_AVAILABLE: 'FINGERPRINT_NOT_AVAILABLE',
FINGERPRINT_PERMISSION_DENIED: 'FINGERPRINT_PERMISSION_DENIED',
FINGERPRINT_PERMISSION_DENIED_SHOW_REQUEST: 'FINGERPRINT_PERMISSION_DENIED_SHOW_REQUEST',
ILLEGAL_BLOCK_SIZE_EXCEPTION: 'ILLEGAL_BLOCK_SIZE_EXCEPTION',
INIT_CIPHER_FAILED: 'INIT_CIPHER_FAILED',
INVALID_ALGORITHM_PARAMETER_EXCEPTION: 'INVALID_ALGORITHM_PARAMETER_EXCEPTION',
IO_EXCEPTION: 'IO_EXCEPTION',
JSON_EXCEPTION: 'JSON_EXCEPTION',
MINIMUM_SDK: 'MINIMUM_SDK',
MISSING_ACTION_PARAMETERS: 'MISSING_ACTION_PARAMETERS',
MISSING_PARAMETERS: 'MISSING_PARAMETERS',
NO_SUCH_ALGORITHM_EXCEPTION: 'NO_SUCH_ALGORITHM_EXCEPTION',
SECURITY_EXCEPTION: 'SECURITY_EXCEPTION'
};
/**
* Opens a native dialog fragment to use the device hardware fingerprint scanner to authenticate against fingerprints registered for the device.
@@ -156,7 +177,7 @@ export class AndroidFingerprintAuth {
* @returns {Promise<any>}
*/
@Cordova()
encrypt(options: AFAAuthOptions): Promise<AFAEncryptResponse> {return; }
encrypt(options: AFAAuthOptions): Promise<AFAEncryptResponse> { return; }
/**
* Opens a native dialog fragment to use the device hardware fingerprint scanner to authenticate against fingerprints registered for the device.
@@ -164,19 +185,19 @@ export class AndroidFingerprintAuth {
* @returns {Promise<any>}
*/
@Cordova()
decrypt(options: AFAAuthOptions): Promise<AFADecryptOptions> {return; }
decrypt(options: AFAAuthOptions): Promise<AFADecryptOptions> { return; }
/**
* Check if service is available
* @returns {Promise<any>} Returns a Promise that resolves if fingerprint auth is available on the device
*/
@Cordova()
isAvailable(): Promise<{isAvailable: boolean}> { return; }
isAvailable(): Promise<{ isAvailable: boolean }> { return; }
/**
* Delete the cipher used for encryption and decryption by username
* @returns {Promise<any>} Returns a Promise that resolves if the cipher was successfully deleted
*/
@Cordova()
delete(options: {clientId: string; username: string; }): Promise<{deleted: boolean}> { return; }
delete(options: { clientId: string; username: string; }): Promise<{ deleted: boolean }> { return; }
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Android Full Screen
@@ -29,7 +29,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android']
})
@Injectable()
export class AndroidFullScreen {
export class AndroidFullScreen extends IonicNativePlugin {
/**
* Is this plugin supported?
* @return {Promise<void>}

View File

@@ -0,0 +1,226 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
* @name Android Permissions
* @description
* This plugin is designed to support Android new permissions checking mechanism.
*
* You can find all permissions here: https://developer.android.com/reference/android/Manifest.permission.html
*
* @usage
* ```
* import { AndroidPermissions } from '@ionic-native/android-permissions';
*
*
* constructor(private androidPermissions: AndroidPermissions) { }
*
* ...
*
* this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.CAMERA).then(
* success => console.log('Permission granted'),
* err => this.androidPermissions.requestPermissions(this.androidPermissions.PERMISSION.CAMERA)
* );
*
* this.androidPermissions.requestPermissions([this.androidPermissions.PERMISSION.CAMERA, this.androidPermissions.PERMISSION.GET_ACCOUNTS]);
*
* ```
*/
@Plugin({
pluginName: 'AndroidPermissions',
plugin: 'cordova-plugin-android-permissions',
pluginRef: 'cordova.plugins.permissions',
repo: 'https://github.com/NeoLSN/cordova-plugin-android-permissions',
platforms: ['Android']
})
@Injectable()
export class AndroidPermissions extends IonicNativePlugin {
PERMISSION: any = {
ACCESS_CHECKIN_PROPERTIES: 'android.permission.ACCESS_CHECKIN_PROPERTIES',
ACCESS_COARSE_LOCATION: 'android.permission.ACCESS_COARSE_LOCATION',
ACCESS_FINE_LOCATION: 'android.permission.ACCESS_FINE_LOCATION',
ACCESS_LOCATION_EXTRA_COMMANDS: 'android.permission.ACCESS_LOCATION_EXTRA_COMMANDS',
ACCESS_MOCK_LOCATION: 'android.permission.ACCESS_MOCK_LOCATION',
ACCESS_NETWORK_STATE: 'android.permission.ACCESS_NETWORK_STATE',
ACCESS_SURFACE_FLINGER: 'android.permission.ACCESS_SURFACE_FLINGER',
ACCESS_WIFI_STATE: 'android.permission.ACCESS_WIFI_STATE',
ACCOUNT_MANAGER: 'android.permission.ACCOUNT_MANAGER',
ADD_VOICEMAIL: 'com.android.voicemail.permission.ADD_VOICEMAIL',
AUTHENTICATE_ACCOUNTS: 'android.permission.AUTHENTICATE_ACCOUNTS',
BATTERY_STATS: 'android.permission.BATTERY_STATS',
BIND_ACCESSIBILITY_SERVICE: 'android.permission.BIND_ACCESSIBILITY_SERVICE',
BIND_APPWIDGET: 'android.permission.BIND_APPWIDGET',
BIND_CARRIER_MESSAGING_SERVICE: 'android.permission.BIND_CARRIER_MESSAGING_SERVICE',
BIND_DEVICE_ADMIN: 'android.permission.BIND_DEVICE_ADMIN',
BIND_DREAM_SERVICE: 'android.permission.BIND_DREAM_SERVICE',
BIND_INPUT_METHOD: 'android.permission.BIND_INPUT_METHOD',
BIND_NFC_SERVICE: 'android.permission.BIND_NFC_SERVICE',
BIND_NOTIFICATION_LISTENER_SERVICE: 'android.permission.BIND_NOTIFICATION_LISTENER_SERVICE',
BIND_PRINT_SERVICE: 'android.permission.BIND_PRINT_SERVICE',
BIND_REMOTEVIEWS: 'android.permission.BIND_REMOTEVIEWS',
BIND_TEXT_SERVICE: 'android.permission.BIND_TEXT_SERVICE',
BIND_TV_INPUT: 'android.permission.BIND_TV_INPUT',
BIND_VOICE_INTERACTION: 'android.permission.BIND_VOICE_INTERACTION',
BIND_VPN_SERVICE: 'android.permission.BIND_VPN_SERVICE',
BIND_WALLPAPER: 'android.permission.BIND_WALLPAPER',
BLUETOOTH: 'android.permission.BLUETOOTH',
BLUETOOTH_ADMIN: 'android.permission.BLUETOOTH_ADMIN',
BLUETOOTH_PRIVILEGED: 'android.permission.BLUETOOTH_PRIVILEGED',
BODY_SENSORS: 'android.permission.BODY_SENSORS',
BRICK: 'android.permission.BRICK',
BROADCAST_PACKAGE_REMOVED: 'android.permission.BROADCAST_PACKAGE_REMOVED',
BROADCAST_SMS: 'android.permission.BROADCAST_SMS',
BROADCAST_STICKY: 'android.permission.BROADCAST_STICKY',
BROADCAST_WAP_PUSH: 'android.permission.BROADCAST_WAP_PUSH',
CALL_PHONE: 'android.permission.CALL_PHONE',
CALL_PRIVILEGED: 'android.permission.CALL_PRIVILEGED',
CAMERA: 'android.permission.CAMERA',
CAPTURE_AUDIO_OUTPUT: 'android.permission.CAPTURE_AUDIO_OUTPUT',
CAPTURE_SECURE_VIDEO_OUTPUT: 'android.permission.CAPTURE_SECURE_VIDEO_OUTPUT',
CAPTURE_VIDEO_OUTPUT: 'android.permission.CAPTURE_VIDEO_OUTPUT',
CHANGE_COMPONENT_ENABLED_STATE: 'android.permission.CHANGE_COMPONENT_ENABLED_STATE',
CHANGE_CONFIGURATION: 'android.permission.CHANGE_CONFIGURATION',
CHANGE_NETWORK_STATE: 'android.permission.CHANGE_NETWORK_STATE',
CHANGE_WIFI_MULTICAST_STATE: 'android.permission.CHANGE_WIFI_MULTICAST_STATE',
CHANGE_WIFI_STATE: 'android.permission.CHANGE_WIFI_STATE',
CLEAR_APP_CACHE: 'android.permission.CLEAR_APP_CACHE',
CLEAR_APP_USER_DATA: 'android.permission.CLEAR_APP_USER_DATA',
CONTROL_LOCATION_UPDATES: 'android.permission.CONTROL_LOCATION_UPDATES',
DELETE_CACHE_FILES: 'android.permission.DELETE_CACHE_FILES',
DELETE_PACKAGES: 'android.permission.DELETE_PACKAGES',
DEVICE_POWER: 'android.permission.DEVICE_POWER',
DIAGNOSTIC: 'android.permission.DIAGNOSTIC',
DISABLE_KEYGUARD: 'android.permission.DISABLE_KEYGUARD',
DUMP: 'android.permission.DUMP',
EXPAND_STATUS_BAR: 'android.permission.EXPAND_STATUS_BAR',
FACTORY_TEST: 'android.permission.FACTORY_TEST',
FLASHLIGHT: 'android.permission.FLASHLIGHT',
FORCE_BACK: 'android.permission.FORCE_BACK',
GET_ACCOUNTS: 'android.permission.GET_ACCOUNTS',
GET_PACKAGE_SIZE: 'android.permission.GET_PACKAGE_SIZE',
GET_TASKS: 'android.permission.GET_TASKS',
GET_TOP_ACTIVITY_INFO: 'android.permission.GET_TOP_ACTIVITY_INFO',
GLOBAL_SEARCH: 'android.permission.GLOBAL_SEARCH',
HARDWARE_TEST: 'android.permission.HARDWARE_TEST',
INJECT_EVENTS: 'android.permission.INJECT_EVENTS',
INSTALL_LOCATION_PROVIDER: 'android.permission.INSTALL_LOCATION_PROVIDER',
INSTALL_PACKAGES: 'android.permission.INSTALL_PACKAGES',
INSTALL_SHORTCUT: 'com.android.launcher.permission.INSTALL_SHORTCUT',
INTERNAL_SYSTEM_WINDOW: 'android.permission.INTERNAL_SYSTEM_WINDOW',
INTERNET: 'android.permission.INTERNET',
KILL_BACKGROUND_PROCESSES: 'android.permission.KILL_BACKGROUND_PROCESSES',
LOCATION_HARDWARE: 'android.permission.LOCATION_HARDWARE',
MANAGE_ACCOUNTS: 'android.permission.MANAGE_ACCOUNTS',
MANAGE_APP_TOKENS: 'android.permission.MANAGE_APP_TOKENS',
MANAGE_DOCUMENTS: 'android.permission.MANAGE_DOCUMENTS',
MASTER_CLEAR: 'android.permission.MASTER_CLEAR',
MEDIA_CONTENT_CONTROL: 'android.permission.MEDIA_CONTENT_CONTROL',
MODIFY_AUDIO_SETTINGS: 'android.permission.MODIFY_AUDIO_SETTINGS',
MODIFY_PHONE_STATE: 'android.permission.MODIFY_PHONE_STATE',
MOUNT_FORMAT_FILESYSTEMS: 'android.permission.MOUNT_FORMAT_FILESYSTEMS',
MOUNT_UNMOUNT_FILESYSTEMS: 'android.permission.MOUNT_UNMOUNT_FILESYSTEMS',
NFC: 'android.permission.NFC',
PERSISTENT_ACTIVITY: 'android.permission.PERSISTENT_ACTIVITY',
PROCESS_OUTGOING_CALLS: 'android.permission.PROCESS_OUTGOING_CALLS',
READ_CALENDAR: 'android.permission.READ_CALENDAR',
READ_CALL_LOG: 'android.permission.READ_CALL_LOG',
READ_CONTACTS: 'android.permission.READ_CONTACTS',
READ_EXTERNAL_STORAGE: 'android.permission.READ_EXTERNAL_STORAGE',
READ_FRAME_BUFFER: 'android.permission.READ_FRAME_BUFFER',
READ_HISTORY_BOOKMARKS: 'com.android.browser.permission.READ_HISTORY_BOOKMARKS',
READ_INPUT_STATE: 'android.permission.READ_INPUT_STATE',
READ_LOGS: 'android.permission.READ_LOGS',
READ_PHONE_STATE: 'android.permission.READ_PHONE_STATE',
READ_PROFILE: 'android.permission.READ_PROFILE',
READ_SMS: 'android.permission.READ_SMS',
READ_SOCIAL_STREAM: 'android.permission.READ_SOCIAL_STREAM',
READ_SYNC_SETTINGS: 'android.permission.READ_SYNC_SETTINGS',
READ_SYNC_STATS: 'android.permission.READ_SYNC_STATS',
READ_USER_DICTIONARY: 'android.permission.READ_USER_DICTIONARY',
READ_VOICEMAIL: 'com.android.voicemail.permission.READ_VOICEMAIL',
REBOOT: 'android.permission.REBOOT',
RECEIVE_BOOT_COMPLETED: 'android.permission.RECEIVE_BOOT_COMPLETED',
RECEIVE_MMS: 'android.permission.RECEIVE_MMS',
RECEIVE_SMS: 'android.permission.RECEIVE_SMS',
RECEIVE_WAP_PUSH: 'android.permission.RECEIVE_WAP_PUSH',
RECORD_AUDIO: 'android.permission.RECORD_AUDIO',
REORDER_TASKS: 'android.permission.REORDER_TASKS',
RESTART_PACKAGES: 'android.permission.RESTART_PACKAGES',
SEND_RESPOND_VIA_MESSAGE: 'android.permission.SEND_RESPOND_VIA_MESSAGE',
SEND_SMS: 'android.permission.SEND_SMS',
SET_ACTIVITY_WATCHER: 'android.permission.SET_ACTIVITY_WATCHER',
SET_ALARM: 'com.android.alarm.permission.SET_ALARM',
SET_ALWAYS_FINISH: 'android.permission.SET_ALWAYS_FINISH',
SET_ANIMATION_SCALE: 'android.permission.SET_ANIMATION_SCALE',
SET_DEBUG_APP: 'android.permission.SET_DEBUG_APP',
SET_ORIENTATION: 'android.permission.SET_ORIENTATION',
SET_POINTER_SPEED: 'android.permission.SET_POINTER_SPEED',
SET_PREFERRED_APPLICATIONS: 'android.permission.SET_PREFERRED_APPLICATIONS',
SET_PROCESS_LIMIT: 'android.permission.SET_PROCESS_LIMIT',
SET_TIME: 'android.permission.SET_TIME',
SET_TIME_ZONE: 'android.permission.SET_TIME_ZONE',
SET_WALLPAPER: 'android.permission.SET_WALLPAPER',
SET_WALLPAPER_HINTS: 'android.permission.SET_WALLPAPER_HINTS',
SIGNAL_PERSISTENT_PROCESSES: 'android.permission.SIGNAL_PERSISTENT_PROCESSES',
STATUS_BAR: 'android.permission.STATUS_BAR',
SUBSCRIBED_FEEDS_READ: 'android.permission.SUBSCRIBED_FEEDS_READ',
SUBSCRIBED_FEEDS_WRITE: 'android.permission.SUBSCRIBED_FEEDS_WRITE',
SYSTEM_ALERT_WINDOW: 'android.permission.SYSTEM_ALERT_WINDOW',
TRANSMIT_IR: 'android.permission.TRANSMIT_IR',
UNINSTALL_SHORTCUT: 'com.android.launcher.permission.UNINSTALL_SHORTCUT',
UPDATE_DEVICE_STATS: 'android.permission.UPDATE_DEVICE_STATS',
USE_CREDENTIALS: 'android.permission.USE_CREDENTIALS',
USE_SIP: 'android.permission.USE_SIP',
VIBRATE: 'android.permission.VIBRATE',
WAKE_LOCK: 'android.permission.WAKE_LOCK',
WRITE_APN_SETTINGS: 'android.permission.WRITE_APN_SETTINGS',
WRITE_CALENDAR: 'android.permission.WRITE_CALENDAR',
WRITE_CALL_LOG: 'android.permission.WRITE_CALL_LOG',
WRITE_CONTACTS: 'android.permission.WRITE_CONTACTS',
WRITE_EXTERNAL_STORAGE: 'android.permission.WRITE_EXTERNAL_STORAGE',
WRITE_GSERVICES: 'android.permission.WRITE_GSERVICES',
WRITE_HISTORY_BOOKMARKS: 'com.android.browser.permission.WRITE_HISTORY_BOOKMARKS',
WRITE_PROFILE: 'android.permission.WRITE_PROFILE',
WRITE_SECURE_SETTINGS: 'android.permission.WRITE_SECURE_SETTINGS',
WRITE_SETTINGS: 'android.permission.WRITE_SETTINGS',
WRITE_SMS: 'android.permission.WRITE_SMS',
WRITE_SOCIAL_STREAM: 'android.permission.WRITE_SOCIAL_STREAM',
WRITE_SYNC_SETTINGS: 'android.permission.WRITE_SYNC_SETTINGS',
WRITE_USER_DICTIONARY: 'android.permission.WRITE_USER_DICTIONARY',
WRITE_VOICEMAIL: 'com.android.voicemail.permission.WRITE_VOICEMAIL',
};
/**
* Check permission
* @param permission {string} The name of the permission
* @return {Promise<any>} Returns a promise
*/
@Cordova()
checkPermission(permission: string): Promise<any> { return; }
/**
* Request permission
* @param permission {string} The name of the permission to request
* @return {Promise<any>}
*/
@Cordova()
requestPermission(permission: string): Promise<any> { return; }
/**
* Request permissions
* @param permissions {Array<string>} An array with permissions
* @return {Promise<any>} Returns a promise
*/
@Cordova()
requestPermissions(permissions: string[]): Promise<any> { return; }
/**
* This function still works now, will not support in the future.
* @param permission {string} The name of the permission
* @return {Promise<any>} Returns a promise
*/
@Cordova()
hasPermission(permission: string): Promise<any> { return; }
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name App Availability
@@ -40,7 +40,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android', 'iOS']
})
@Injectable()
export class AppAvailability {
export class AppAvailability extends IonicNativePlugin {
/**
* Checks if an app is available on device

View File

@@ -0,0 +1,42 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
* @name App Minimize
* @description
* AppMinimize is a plugin to minimize the application on android devices
*
* @usage
* ```typescript
* import { AppMinimize } from '@ionic-native/app-minimize';
*
*
* constructor(private appMinimize: AppMinimize) { }
*
* ...
*
* this.plugin.minimize().then(
* success => console.log('Closed'),
* err => console.log('Something went wrong')
* );
*
* ```
*/
@Plugin({
pluginName: 'AppMinimize',
plugin: 'cordova-plugin-appminimize',
pluginRef: 'plugins.appMinimize',
repo: 'https://github.com/tomloprod/cordova-plugin-appminimize',
platforms: ['Android']
})
@Injectable()
export class AppMinimize extends IonicNativePlugin {
/**
* Minimizes the application
* @return {Promise<any>}
*/
@Cordova()
minimize(): Promise<any> { return; }
}

View File

@@ -1,4 +1,4 @@
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Injectable } from '@angular/core';
@@ -11,11 +11,12 @@ import { Injectable } from '@angular/core';
* ```typescript
* import { AppPreferences } from '@ionic-native/app-preferences';
*
* constructor(private appPreferences: AppPreferences) {
* constructor(private appPreferences: AppPreferences) { }
*
* this.appPreferences.fetch('key').then((res) => { console.log(res); });
* ...
*
* this.appPreferences.fetch('key').then((res) => { console.log(res); });
*
* }
* ```
*
*/
@@ -24,10 +25,10 @@ import { Injectable } from '@angular/core';
plugin: 'cordova-plugin-app-preferences',
pluginRef: 'plugins.appPreferences',
repo: 'https://github.com/apla/me.apla.cordova.app-preferences',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'iOS', 'OS X', 'Windows 8', 'Windows Phone']
platforms: ['Android', 'BlackBerry 10', 'Browser', 'iOS', 'macOS', 'Windows 8', 'Windows Phone']
})
@Injectable()
export class AppPreferences {
export class AppPreferences extends IonicNativePlugin {
/**
* Get a preference value
@@ -37,7 +38,6 @@ export class AppPreferences {
* @return {Promise<any>} Returns a promise
*/
@Cordova({
sync: true,
callbackOrder: 'reverse'
})
fetch(dict: string, key?: string): Promise<any> { return; }
@@ -47,13 +47,13 @@ export class AppPreferences {
*
* @param {string} dict Dictionary for key (OPTIONAL)
* @param {string} key Key
* @param {string} value Value
* @param {any} value Value
* @return {Promise<any>} Returns a promise
*/
@Cordova({
callbackOrder: 'reverse'
})
store(dict: string, key: string, value?: string): Promise<any> {
store(dict: string, key: string, value?: any): Promise<any> {
return;
}
@@ -108,14 +108,16 @@ export class AppPreferences {
* @returns {Object} Custom object, bound to that suite
*/
@Cordova({
platforms: ['Android']
platforms: ['Android'],
sync: true
})
suite(suiteName: string): Object { return; }
suite(suiteName: string): any { return; }
@Cordova({
platforms: ['iOS']
platforms: ['iOS'],
sync: true
})
iosSuite(suiteName: string): Object { return; }
iosSuite(suiteName: string): any { return; }
/**
* Return cloud synchronized configuration context

View File

@@ -1,8 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, CordovaProperty, Plugin } from '@ionic-native/core';
declare var window;
import { Cordova, CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface AppRatePreferences {
@@ -110,12 +107,24 @@ export interface AppUrls {
* constructor(private appRate: AppRate) { }
*
* ...
* // set certain preferences
* this.appRate.preferences.storeAppURL = {
* ios: '<app_id>',
* android: 'market://details?id=<package_name>',
* windows: 'ms-windows-store://review/?ProductId=<store_id>'
* };
*
* this.appRate.preferences.storeAppURL = {
* ios: '<my_app_id>',
* this.appRate.promptForRating(true);
*
* // or, override the whole preferences object
* this.appRate.preferences = {
* usesUntilPrompt: 3,
* storeAppURL: {
* ios: '<app_id>',
* android: 'market://details?id=<package_name>',
* windows: 'ms-windows-store://review/?ProductId=<Store_ID>'
* };
* windows: 'ms-windows-store://review/?ProductId=<store_id>'
* }
* };
*
* this.appRate.promptForRating(false);
* ```
@@ -134,7 +143,7 @@ export interface AppUrls {
platforms: ['Android', 'iOS', 'Windows (experimental)']
})
@Injectable()
export class AppRate {
export class AppRate extends IonicNativePlugin {
/**
* Configure various settings for the Rating View.

View File

@@ -1,4 +1,4 @@
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
@@ -19,7 +19,7 @@ import { Injectable } from '@angular/core';
*
* Then use the following code:
*
* ```
* ```typescript
* import { AppUpdate } from '@ionic-native/app-update';
*
* constructor(private appUpdate: AppUpdate) {
@@ -28,8 +28,6 @@ import { Injectable } from '@angular/core';
* this.appUpdate.checkAppUpdate(updateUrl);
*
* }
*
*
* ```
*
* The plugin will compare the app version and update it automatically if the API has a newer version to install.
@@ -42,7 +40,7 @@ import { Injectable } from '@angular/core';
platforms: ['Android']
})
@Injectable()
export class AppUpdate {
export class AppUpdate extends IonicNativePlugin {
/**
* Check and update
* @param updateUrl {string} update api url
@@ -53,4 +51,3 @@ export class AppUpdate {
})
checkAppUpdate(updateUrl: string): Promise<any> { return; }
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
@@ -34,7 +34,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android', 'iOS']
})
@Injectable()
export class AppVersion {
export class AppVersion extends IonicNativePlugin {
/**
* Returns the name of the app

View File

@@ -1,4 +1,4 @@
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs';
import { Injectable } from '@angular/core';
@@ -8,7 +8,7 @@ import { Injectable } from '@angular/core';
* Plugin to serve ads through native Appodeal SDKs
*
* @usage
* ```
* ```typescript
* import { Appodeal } from '@ionic-native/appodeal';
*
* constructor(private appodeal: Appodeal) {
@@ -18,20 +18,17 @@ import { Injectable } from '@angular/core';
* appodeal.show(appodeal.AD_TYPES.REWARDED_VIDEO);
*
* }
*
*
*
* ```
*/
@Plugin({
pluginName: 'Appodeal',
plugin: 'https://github.com/appodeal/appodeal-cordova-plugin',
plugin: 'https://github.com/appodeal/appodeal-cordova-plugin.git',
pluginRef: 'Appodeal',
repo: 'https://github.com/appodeal/appodeal-cordova-plugin.git',
platforms: [ 'iOS', 'Android' ]
repo: 'https://github.com/appodeal/appodeal-cordova-plugin',
platforms: ['iOS', 'Android']
})
@Injectable()
export class Appodeal {
export class Appodeal extends IonicNativePlugin {
// available types of advertisements
readonly AD_TYPES = {
INTERSTITIAL: 1,
@@ -49,7 +46,7 @@ export class Appodeal {
* @param {number} adType
*/
@Cordova()
initialize(appKey: string, adType: number): void {};
initialize(appKey: string, adType: number): void { };
/**
* check if SDK has been initialized
@@ -76,21 +73,21 @@ export class Appodeal {
showWithPlacement(
adType: number,
placement: any
): Promise<any> { return; };
): Promise<any> { return; };
/**
* hide ad of specified type
* @param {number} adType
*/
@Cordova()
hide(adType: number): void {};
hide(adType: number): void { };
/**
* confirm use of ads of specified type
* @param {number} adType
*/
@Cordova()
confirm(adType: number): void {};
confirm(adType: number): void { };
/**
* check if ad of specified type has been loaded
@@ -114,69 +111,69 @@ export class Appodeal {
* @param autoCache
*/
@Cordova()
setAutoCache(adType: number, autoCache: any): void {};
setAutoCache(adType: number, autoCache: any): void { };
/**
* forcefully cache an ad by type
* @param {number} adType
*/
@Cordova()
cache(adType: number): void {};
cache(adType: number): void { };
/**
*
* @param {boolean} set
*/
@Cordova()
setOnLoadedTriggerBoth(set: boolean): void {};
setOnLoadedTriggerBoth(set: boolean): void { };
/**
* enable or disable Smart Banners
* @param {boolean} enabled
*/
@Cordova()
setSmartBanners(enabled: boolean): void {};
setSmartBanners(enabled: boolean): void { };
/**
* enable or disable banner backgrounds
* @param {boolean} enabled
*/
@Cordova()
setBannerBackground(enabled: boolean): void {};
setBannerBackground(enabled: boolean): void { };
/**
* enable or disable banner animations
* @param {boolean} enabled
*/
@Cordova()
setBannerAnimation(enabled: boolean): void {};
setBannerAnimation(enabled: boolean): void { };
/**
*
* @param value
*/
@Cordova()
set728x90Banners(value: any): void {};
set728x90Banners(value: any): void { };
/**
* enable or disable logging
* @param {boolean} logging
*/
@Cordova()
setLogging(logging: boolean): void {};
setLogging(logging: boolean): void { };
/**
* enable or disable testing mode
* @param {boolean} testing
*/
@Cordova()
setTesting(testing: boolean): void {};
setTesting(testing: boolean): void { };
/**
* reset device ID
*/
@Cordova()
resetUUID(): void {};
resetUUID(): void { };
/**
* get version of Appdeal SDK
@@ -190,7 +187,7 @@ export class Appodeal {
* @param {number} adType
*/
@Cordova()
disableNetwork(network?: string, adType?: number): void {};
disableNetwork(network?: string, adType?: number): void { };
/**
*
@@ -198,54 +195,54 @@ export class Appodeal {
* @param {number} adType
*/
@Cordova()
disableNetworkType(network?: string, adType?: number): void {};
disableNetworkType(network?: string, adType?: number): void { };
/**
* disable Location permissions for Appodeal SDK
*/
@Cordova()
disableLocationPermissionCheck(): void {};
disableLocationPermissionCheck(): void { };
/**
* disable Storage permissions for Appodeal SDK
*/
@Cordova()
disableWriteExternalStoragePermissionCheck(): void {};
disableWriteExternalStoragePermissionCheck(): void { };
/**
* enable event listeners
* @param {boolean} enabled
*/
@Cordova()
enableInterstitialCallbacks(enabled: boolean): void {};
enableInterstitialCallbacks(enabled: boolean): void { };
/**
* enable event listeners
* @param {boolean} enabled
*/
@Cordova()
enableSkippableVideoCallbacks(enabled: boolean): void {};
enableSkippableVideoCallbacks(enabled: boolean): void { };
/**
* enable event listeners
* @param {boolean} enabled
*/
@Cordova()
enableNonSkippableVideoCallbacks(enabled: boolean): void {};
enableNonSkippableVideoCallbacks(enabled: boolean): void { };
/**
* enable event listeners
* @param {boolean} enabled
*/
@Cordova()
enableBannerCallbacks(enabled: boolean): void {};
enableBannerCallbacks(enabled: boolean): void { };
/**
* enable event listeners
* @param {boolean} enabled
*/
@Cordova()
enableRewardedVideoCallbacks(enabled: boolean): void {};
enableRewardedVideoCallbacks(enabled: boolean): void { };
/**
*
@@ -253,7 +250,7 @@ export class Appodeal {
* @param {boolean} value
*/
@Cordova()
setCustomBooleanRule(name: string, value: boolean): void {};
setCustomBooleanRule(name: string, value: boolean): void { };
/**
*
@@ -261,7 +258,7 @@ export class Appodeal {
* @param {number} value
*/
@Cordova()
setCustomIntegerRule(name: string, value: number): void {};
setCustomIntegerRule(name: string, value: number): void { };
/**
* set rule with float value
@@ -269,7 +266,7 @@ export class Appodeal {
* @param {number} value
*/
@Cordova()
setCustomDoubleRule(name: string, value: number): void {};
setCustomDoubleRule(name: string, value: number): void { };
/**
* set rule with string value
@@ -277,77 +274,77 @@ export class Appodeal {
* @param {string} value
*/
@Cordova()
setCustomStringRule(name: string, value: string): void {};
setCustomStringRule(name: string, value: string): void { };
/**
* set ID preference in Appodeal for current user
* @param id
*/
@Cordova()
setUserId(id: any): void {};
setUserId(id: any): void { };
/**
* set Email preference in Appodeal for current user
* @param email
*/
@Cordova()
setEmail(email: any): void {};
setEmail(email: any): void { };
/**
* set Birthday preference in Appodeal for current user
* @param birthday
*/
@Cordova()
setBirthday(birthday: any): void {};
setBirthday(birthday: any): void { };
/**
* et Age preference in Appodeal for current user
* @param age
*/
@Cordova()
setAge(age: any): void {};
setAge(age: any): void { };
/**
* set Gender preference in Appodeal for current user
* @param gender
*/
@Cordova()
setGender(gender: any): void {};
setGender(gender: any): void { };
/**
* set Occupation preference in Appodeal for current user
* @param occupation
*/
@Cordova()
setOccupation(occupation: any): void {};
setOccupation(occupation: any): void { };
/**
* set Relation preference in Appodeal for current user
* @param relation
*/
@Cordova()
setRelation(relation: any): void {};
setRelation(relation: any): void { };
/**
* set Smoking preference in Appodeal for current user
* @param smoking
*/
@Cordova()
setSmoking(smoking: any): void {};
setSmoking(smoking: any): void { };
/**
* set Alcohol preference in Appodeal for current user
* @param alcohol
*/
@Cordova()
setAlcohol(alcohol: any): void {};
setAlcohol(alcohol: any): void { };
/**
* set Interests preference in Appodeal for current user
* @param interests
*/
@Cordova()
setInterests(interests: any): void {};
setInterests(interests: any): void { };
@Cordova({
eventObservable: true,

View File

@@ -0,0 +1,47 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
* @name Autostart
* @description
* This plugin will start automatically your Android app after the every boot or the auto-update of your application.
* You can enable or disable the autostart function in your app.
*
* @usage
* ```typescript
* import { Autostart } from '@ionic-native/autostart';
*
*
* constructor(private autostart: Autostart) { }
*
* ...
*
* this.autostart.enable();
*
* this.autostart.disable();
*
* ```
*/
@Plugin({
pluginName: 'Autostart',
plugin: 'cordova-plugin-autostart',
pluginRef: 'cordova.plugins.autoStart',
repo: 'https://github.com/ToniKorin/cordova-plugin-autostart',
platforms: ['Android']
})
@Injectable()
export class Autostart extends IonicNativePlugin {
/**
* Enable the automatic startup after the boot
*/
@Cordova({ sync: true })
enable(): void { }
/**
* Disable the automatic startup after the boot
*/
@Cordova({ sync: true })
disable(): void { }
}

View File

@@ -1,9 +1,6 @@
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
declare var window;
export interface BackgroundFetchConfig {
/**
@@ -63,7 +60,7 @@ export interface BackgroundFetchConfig {
platforms: ['iOS']
})
@Injectable()
export class BackgroundFetch {
export class BackgroundFetch extends IonicNativePlugin {
/**
@@ -100,4 +97,11 @@ export class BackgroundFetch {
})
finish(): void { }
/**
* Return the status of the background-fetch
* @returns {Promise<any>}
*/
@Cordova()
status(): Promise<any> { return; }
}

View File

@@ -1,9 +1,7 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
declare var window;
export interface BackgroundGeolocationResponse {
/**
@@ -311,7 +309,7 @@ export interface BackgroundGeolocationConfig {
platforms: ['iOS', 'Android', 'Windows Phone 8']
})
@Injectable()
export class BackgroundGeolocation {
export class BackgroundGeolocation extends IonicNativePlugin {
/**
* Set location service provider @see https://github.com/mauron85/cordova-plugin-background-geolocation/wiki/Android-providers
@@ -448,13 +446,13 @@ export class BackgroundGeolocation {
/**
* Display app settings to change permissions
*/
@Cordova({sync: true})
@Cordova({ sync: true })
showAppSettings(): void { }
/**
* Display device location settings
*/
@Cordova({sync: true})
@Cordova({ sync: true })
showLocationSettings(): void { }
/**

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
@@ -73,7 +73,7 @@ export interface BackgroundModeConfiguration {
platforms: ['Android', 'iOS', 'Windows Phone 8']
})
@Injectable()
export class BackgroundMode {
export class BackgroundMode extends IonicNativePlugin {
/**
* Enable the background mode.
@@ -112,7 +112,7 @@ export class BackgroundMode {
/**
* Override the default title, ticker and text.
* Available only for Android platform.
* @param {Configure} options List of option to configure. See table below
* @param {BackgroundModeConfiguration} options List of option to configure. See table below
*/
@Cordova({
platforms: ['Android']
@@ -122,12 +122,13 @@ export class BackgroundMode {
/**
* Modify the displayed information.
* Available only for Android platform.
* @param {Configure} options Any options you want to update. See table below.
* @param {BackgroundModeConfiguration} options Any options you want to update. See table below.
*/
@Cordova({
platforms: ['Android']
platforms: ['Android'],
sync: true
})
configure(options?: BackgroundModeConfiguration): Promise<any> { return; }
configure(options?: BackgroundModeConfiguration): void {}
/**
* Listen for events that the plugin fires. Available events are `enable`, `disable`, `activate`, `deactivate` and `failure`.
@@ -148,7 +149,16 @@ export class BackgroundMode {
platforms: ['Android'],
sync: true
})
moveToBackground(): void {}
moveToBackground(): void { }
/**
* Enable GPS-tracking in background (Android).
*/
@Cordova({
platforms: ['Android'],
sync: true
})
disableWebViewOptimizations (): void { }
/**
* Android allows to programmatically move from background to foreground.
@@ -157,7 +167,7 @@ export class BackgroundMode {
platforms: ['Android'],
sync: true
})
moveToForeground(): void {}
moveToForeground(): void { }
/**
* Override the back button on Android to go to background instead of closing the app.
@@ -166,7 +176,7 @@ export class BackgroundMode {
platforms: ['Android'],
sync: true
})
overrideBackButton(): void {}
overrideBackButton(): void { }
/**
* Exclude the app from the recent task list works on Android 5.0+.
@@ -175,7 +185,7 @@ export class BackgroundMode {
platforms: ['Android'],
sync: true
})
excludeFromTaskList(): void {}
excludeFromTaskList(): void { }
/**
* The method works async instead of isActive() or isEnabled().
@@ -192,7 +202,7 @@ export class BackgroundMode {
platforms: ['Android'],
sync: true
})
wakeUp(): void {}
wakeUp(): void { }
/**
* Turn screen on and show app even locked
@@ -201,6 +211,6 @@ export class BackgroundMode {
platforms: ['Android'],
sync: true
})
unlock(): void {}
unlock(): void { }
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
@@ -9,7 +9,7 @@ import { Plugin, Cordova } from '@ionic-native/core';
* This plugin adds turning on/off the device backlight.
*
* @usage
* ```
* ```typescript
* import { Backlight } from '@ionic-native/backlight';
*
* constructor(private backlight: Backlight) { }
@@ -32,7 +32,7 @@ import { Plugin, Cordova } from '@ionic-native/core';
platforms: ['Android']
})
@Injectable()
export class Backlight {
export class Backlight extends IonicNativePlugin {
/**
* This function turns backlight on

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
@@ -30,7 +30,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android', 'iOS', 'Browser', 'Windows', 'Amazon FireOS', 'Windows Phone 8']
})
@Injectable()
export class Badge {
export class Badge extends IonicNativePlugin {
/**
* Clear the badge of the app icon.

View File

@@ -1,6 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface BarcodeScannerOptions {
@@ -56,6 +55,12 @@ export interface BarcodeScannerOptions {
}
export interface BarcodeScanResult {
format: 'QR_CODE' | 'DATA_MATRIX' | 'UPC_E' | 'UPC_A' | 'EAN_8' | 'EAN_13' | 'CODE_128' | 'CODE_39' | 'CODE_93' | 'CODABAR' | 'ITF' | 'RSS14' | 'RSS_EXPANDED' | 'PDF417' | 'AZTEC' | 'MSI';
cancelled: boolean;
text: string;
}
/**
* @name Barcode Scanner
* @description
@@ -80,6 +85,7 @@ export interface BarcodeScannerOptions {
* ```
* @interfaces
* BarcodeScannerOptions
* BarcodeScanResult
*/
@Plugin({
pluginName: 'BarcodeScanner',
@@ -89,7 +95,7 @@ export interface BarcodeScannerOptions {
platforms: ['Android', 'iOS', 'Windows Phone 8', 'Windows 10', 'Windows 8', 'BlackBerry 10', 'Browser']
})
@Injectable()
export class BarcodeScanner {
export class BarcodeScanner extends IonicNativePlugin {
Encode: {
TEXT_TYPE: string;
@@ -111,7 +117,7 @@ export class BarcodeScanner {
@Cordova({
callbackOrder: 'reverse'
})
scan(options?: BarcodeScannerOptions): Promise<any> { return; }
scan(options?: BarcodeScannerOptions): Promise<BarcodeScanResult> { return; }
/**
* Encodes data into a barcode.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Base64 To Gallery
@@ -28,7 +28,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android', 'iOS', 'Windows Phone 8']
})
@Injectable()
export class Base64ToGallery {
export class Base64ToGallery extends IonicNativePlugin {
/**
* Converts a base64 string to an image file in the device gallery
@@ -40,7 +40,7 @@ export class Base64ToGallery {
successIndex: 2,
errorIndex: 3
})
base64ToGallery(data: string, options?: {prefix?: string; mediaScanner?: boolean}): Promise<any> {
base64ToGallery(data: string, options?: { prefix?: string; mediaScanner?: boolean }): Promise<any> {
return;
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface BatteryStatusResponse {
@@ -32,7 +32,7 @@ export interface BatteryStatusResponse {
*
* // watch change in battery status
* let subscription = this.batteryStatus.onChange().subscribe(
* (status: StatusObject) => {
* (status: BatteryStatusResponse) => {
* console.log(status.level, status.isPlugged);
* }
* );
@@ -52,7 +52,7 @@ export interface BatteryStatusResponse {
platforms: ['Amazon Fire OS', 'iOS', 'Android', 'BlackBerry 10', 'Windows Phone 7', 'Windows Phone 8', 'Windows', 'Firefox OS', 'Browser']
})
@Injectable()
export class BatteryStatus {
export class BatteryStatus extends IonicNativePlugin {
/**
* Watch the change in battery level

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
/**
@@ -35,59 +35,59 @@ import { Observable } from 'rxjs/Observable';
*
* ```typescript
* {
* "name": "Battery Demo",
* "id": "20:FF:D0:FF:D1:C0",
* "advertising": [2,1,6,3,3,15,24,8,9,66,97,116,116,101,114,121],
* "rssi": -55
* 'name': 'Battery Demo',
* 'id': '20:FF:D0:FF:D1:C0',
* 'advertising': [2,1,6,3,3,15,24,8,9,66,97,116,116,101,114,121],
* 'rssi': -55
* }
* ```
* After connecting, the peripheral object also includes service, characteristic and descriptor information.
*
* ```typescript
* {
* "name": "Battery Demo",
* "id": "20:FF:D0:FF:D1:C0",
* "advertising": [2,1,6,3,3,15,24,8,9,66,97,116,116,101,114,121],
* "rssi": -55,
* "services": [
* "1800",
* "1801",
* "180f"
* 'name': 'Battery Demo',
* 'id': '20:FF:D0:FF:D1:C0',
* 'advertising': [2,1,6,3,3,15,24,8,9,66,97,116,116,101,114,121],
* 'rssi': -55,
* 'services': [
* '1800',
* '1801',
* '180f'
* ],
* "characteristics": [
* 'characteristics': [
* {
* "service": "1800",
* "characteristic": "2a00",
* "properties": [
* "Read"
* 'service': '1800',
* 'characteristic': '2a00',
* 'properties': [
* 'Read'
* ]
* },
* {
* "service": "1800",
* "characteristic": "2a01",
* "properties": [
* "Read"
* 'service': '1800',
* 'characteristic': '2a01',
* 'properties': [
* 'Read'
* ]
* },
* {
* "service": "1801",
* "characteristic": "2a05",
* "properties": [
* "Read"
* 'service': '1801',
* 'characteristic': '2a05',
* 'properties': [
* 'Read'
* ]
* },
* {
* "service": "180f",
* "characteristic": "2a19",
* "properties": [
* "Read"
* 'service': '180f',
* 'characteristic': '2a19',
* 'properties': [
* 'Read'
* ],
* "descriptors": [
* 'descriptors': [
* {
* "uuid": "2901"
* 'uuid': '2901'
* },
* {
* "uuid": "2904"
* 'uuid': '2904'
* }
* ]
* }
@@ -104,10 +104,10 @@ import { Observable } from 'rxjs/Observable';
*
* ```typescript
* {
* "name": "demo",
* "id": "00:1A:7D:DA:71:13",
* "advertising": ArrayBuffer,
* "rssi": -37
* 'name': 'demo',
* 'id': '00:1A:7D:DA:71:13',
* 'advertising': ArrayBuffer,
* 'rssi': -37
* }
* ```
*
@@ -119,24 +119,24 @@ import { Observable } from 'rxjs/Observable';
*
* ```typescript
* {
* "name": "demo",
* "id": "D8479A4F-7517-BCD3-91B5-3302B2F81802",
* "advertising": {
* "kCBAdvDataChannel": 37,
* "kCBAdvDataServiceData": {
* "FED8": {
* "byteLength": 7 // data not shown
* 'name': 'demo',
* 'id': 'D8479A4F-7517-BCD3-91B5-3302B2F81802',
* 'advertising': {
* 'kCBAdvDataChannel': 37,
* 'kCBAdvDataServiceData': {
* 'FED8': {
* 'byteLength': 7 // data not shown
* }
* },
* "kCBAdvDataLocalName": "demo",
* "kCBAdvDataServiceUUIDs": ["FED8"],
* "kCBAdvDataManufacturerData": {
* "byteLength": 7 // data not shown
* 'kCBAdvDataLocalName': 'demo',
* 'kCBAdvDataServiceUUIDs': ['FED8'],
* 'kCBAdvDataManufacturerData': {
* 'byteLength': 7 // data not shown
* },
* "kCBAdvDataTxPowerLevel": 32,
* "kCBAdvDataIsConnectable": true
* 'kCBAdvDataTxPowerLevel': 32,
* 'kCBAdvDataIsConnectable': true
* },
* "rssi": -53
* 'rssi': -53
* }
* ```
*
@@ -176,7 +176,7 @@ import { Observable } from 'rxjs/Observable';
platforms: ['iOS', 'Android']
})
@Injectable()
export class BLE {
export class BLE extends IonicNativePlugin {
/**
* Scan and discover BLE peripherals for the specified amount of time.
@@ -230,7 +230,7 @@ export class BLE {
clearFunction: 'stopScan',
clearWithArgs: false
})
startScanWithOptions(services: string[], options: {reportDuplicates?: boolean} | any): Observable<any> { return; }
startScanWithOptions(services: string[], options: { reportDuplicates?: boolean } | any): Observable<any> { return; }
/**
* Stop a scan started by `startScan`.
@@ -306,14 +306,14 @@ export class BLE {
* // send 1 byte to switch a light on
* var data = new Uint8Array(1);
* data[0] = 1;
* BLE.write(device_id, "FF10", "FF11", data.buffer);
* BLE.write(device_id, 'FF10', 'FF11', data.buffer);
*
* // send a 3 byte value with RGB color
* var data = new Uint8Array(3);
* data[0] = 0xFF; // red
* data[0] = 0x00; // green
* data[0] = 0xFF; // blue
* BLE.write(device_id, "ccc0", "ccc1", data.buffer);
* BLE.write(device_id, 'ccc0', 'ccc1', data.buffer);
*
* // send a 32 bit integer
* var data = new Uint32Array(1);
@@ -357,7 +357,7 @@ export class BLE {
*
* @usage
* ```
* BLE.startNotification(device_id, "FF10", "FF11").subscribe(buffer => {
* BLE.startNotification(device_id, 'FF10', 'FF11').subscribe(buffer => {
* console.log(String.fromCharCode.apply(null, new Uint8Array(buffer));
* });
* ```

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
/**
@@ -13,7 +13,7 @@ import { Observable } from 'rxjs/Observable';
*
*
* // Write a string
* this.bluetoothSerial.write("hello world").then(success, failure);
* this.bluetoothSerial.write('hello world').then(success, failure);
*
* // Array of int or bytes
* this.bluetoothSerial.write([186, 220, 222]).then(success, failure);
@@ -38,7 +38,7 @@ import { Observable } from 'rxjs/Observable';
platforms: ['Android', 'iOS', 'Windows Phone', 'Browser']
})
@Injectable()
export class BluetoothSerial {
export class BluetoothSerial extends IonicNativePlugin {
/**
* Connect to a Bluetooth device

View File

@@ -1,5 +1,6 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Brightness
@@ -29,7 +30,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android', 'iOS']
})
@Injectable()
export class Brightness {
export class Brightness extends IonicNativePlugin {
/**
* Sets the brightness of the display.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
/**
@@ -8,7 +8,7 @@ import { Observable } from 'rxjs/Observable';
* This plugin adds exchanging events between native code and your app.
*
* @usage
* ```
* ```typescript
* import { Broadcaster } from '@ionic-native/broadcaster';
*
* constructor(private broadcaster: Broadcaster) { }
@@ -16,7 +16,7 @@ import { Observable } from 'rxjs/Observable';
* ...
*
* // Listen to events from Native
* this.broadcaster.addEventListener('eventName').then((event) => console.log(event));
* this.broadcaster.addEventListener('eventName').subscribe((event) => console.log(event));
*
* // Send event to Native
* this.broadcaster.fireNativeEvent('eventName', {}).then(() => console.log('success'));
@@ -31,7 +31,7 @@ import { Observable } from 'rxjs/Observable';
platforms: ['Android', 'iOS']
})
@Injectable()
export class Broadcaster {
export class Broadcaster extends IonicNativePlugin {
/**
* This function listen to an event sent from the native code

View File

@@ -1,4 +1,4 @@
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
@@ -7,7 +7,7 @@ import { Injectable } from '@angular/core';
* This plugin provides an interface to in-app browser tabs that exist on some mobile platforms, specifically [Custom Tabs](http://developer.android.com/tools/support-library/features.html#custom-tabs) on Android (including the [Chrome Custom Tabs](https://developer.chrome.com/multidevice/android/customtabs) implementation), and [SFSafariViewController](https://developer.apple.com/library/ios/documentation/SafariServices/Reference/SFSafariViewController_Ref/) on iOS.
*
* @usage
* ```
* ```typescript
* import { BrowserTab } from '@ionic-native/browser-tab';
*
* constructor(private browserTab: BrowserTab) {
@@ -40,7 +40,7 @@ import { Injectable } from '@angular/core';
platforms: ['Android', 'iOS']
})
@Injectable()
export class BrowserTab {
export class BrowserTab extends IonicNativePlugin {
/**
* Check if BrowserTab option is available

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface CalendarOptions {
@@ -59,8 +59,8 @@ export interface CalendarOptions {
*
*
* @usage
* ```
* import {Calendar} from '@ionic-native/calendar';
* ```typescript
* import { Calendar } from '@ionic-native/calendar';
*
* constructor(private calendar: Calendar) { }
*
@@ -81,7 +81,7 @@ export interface CalendarOptions {
platforms: ['Android', 'iOS']
})
@Injectable()
export class Calendar {
export class Calendar extends IonicNativePlugin {
/**
* This function checks if we have permission to read/write from/to the calendar.

View File

@@ -1,13 +1,13 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Call Number
* @description
* Call a number directly from your Cordova/Ionic application.
*
* @usage
* ```
* import {CallNumber} from '@ionic-native/call-number';
* ```typescript
* import { CallNumber } from '@ionic-native/call-number';
*
* constructor(private callNumber: CallNumber) { }
*
@@ -28,7 +28,7 @@ import { Plugin, Cordova } from '@ionic-native/core';
platforms: ['iOS', 'Android']
})
@Injectable()
export class CallNumber {
export class CallNumber extends IonicNativePlugin {
/**
* Calls a phone number

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface CameraPreviewDimensions {
/** The width of the camera preview, default to window.screen.width */
@@ -39,12 +39,12 @@ export interface CameraPreviewOptions {
}
export interface CameraPreviewPictureOptions {
/** The width in pixels, default 0 */
width?: number;
/** The height in pixels, default 0 */
height?: number;
/** The picture quality, 0 - 100, default 85 */
quality?: number;
/** The width in pixels, default 0 */
width?: number;
/** The height in pixels, default 0 */
height?: number;
/** The picture quality, 0 - 100, default 85 */
quality?: number;
}
/**
@@ -57,7 +57,7 @@ export interface CameraPreviewPictureOptions {
*
* @usage
* ```typescript
* import { CameraPreview, PictureOptions, CameraPreviewOptions, CameraPreviewDimensions } from '@ionic-native/camera-preview';
* import { CameraPreview, CameraPreviewPictureOptions, CameraPreviewOptions, CameraPreviewDimensions } from '@ionic-native/camera-preview';
*
* constructor(private cameraPreview: CameraPreview) { }
*
@@ -93,7 +93,7 @@ export interface CameraPreviewPictureOptions {
*
*
* // picture options
* const pictureOpts: PictureOptions = {
* const pictureOpts: CameraPreviewPictureOptions = {
* width: 1280,
* height: 1280,
* quality: 85
@@ -132,7 +132,50 @@ export interface CameraPreviewPictureOptions {
platforms: ['Android', 'iOS']
})
@Injectable()
export class CameraPreview {
export class CameraPreview extends IonicNativePlugin {
FOCUS_MODE = {
FIXED: 'fixed',
AUTO: 'auto',
CONTINUOUS: 'continuous', // IOS Only
CONTINUOUS_PICTURE: 'continuous-picture', // Android Only
CONTINUOUS_VIDEO: 'continuous-video', // Android Only
EDOF: 'edof', // Android Only
INFINITY: 'infinity', // Android Only
MACRO: 'macro' // Android Only
};
EXPOSURE_MODE = {
LOCK: 'lock', // IOS Only
AUTO: 'auto', // IOS Only
CONTINUOUS: 'continuous',
CUSTOM: 'custom'
};
FLASH_MODE = {
OFF: 'off',
ON: 'on',
AUTO: 'auto',
RED_EYE: 'red-eye',
TORCH: 'torch' // Android Only
};
COLOR_EFFECT = {
AQUA: 'aqua', // Android Only
BLACKBOARD: 'blackboard', // Android Only
MONO: 'mono',
NEGATIVE: 'negative',
NONE: 'none',
POSTERIZE: 'posterize',
SEPIA: 'sepia',
SOLARIZE: 'solarize', // Android Only
WHITEBOARD: 'whiteboard' // Android Only
};
CAMERA_DIRECTION = {
BACK: 'back',
FRONT: 'front'
};
/**
* Starts the camera preview instance.
@@ -149,40 +192,28 @@ export class CameraPreview {
* Stops the camera preview instance. (iOS & Android)
* @return {Promise<any>}
*/
@Cordova({
successIndex: 0,
errorIndex: 1
})
@Cordova()
stopCamera(): Promise<any> { return; }
/**
* Switch from the rear camera and front camera, if available.
* @return {Promise<any>}
*/
@Cordova({
successIndex: 0,
errorIndex: 1
})
@Cordova()
switchCamera(): Promise<any> { return; }
/**
* Hide the camera preview box.
* @return {Promise<any>}
*/
@Cordova({
successIndex: 0,
errorIndex: 1
})
@Cordova()
hide(): Promise<any> { return; }
/**
* Show the camera preview box.
* @return {Promise<any>}
*/
@Cordova({
successIndex: 0,
errorIndex: 1
})
@Cordova()
show(): Promise<any> { return; }
/**
@@ -220,6 +251,19 @@ export class CameraPreview {
})
setZoom(zoom?: number): Promise<any> { return; }
/**
* Get the maximum zoom (Android)
* @return {Promise<any>}
*/
@Cordova()
getMaxZoom(): Promise<any> { return; }
/**
* Get current zoom (Android)
* @return {Promise<any>}
*/
@Cordova()
getZoom(): Promise<any> { return; }
/**
* Set the preview Size
@@ -228,11 +272,42 @@ export class CameraPreview {
*/
@Cordova({
successIndex: 1,
errorIndex: 2,
platforms: ['Android']
errorIndex: 2
})
setPreviewSize(dimensions?: CameraPreviewDimensions): Promise<any> { return; }
/**
* Get focus mode
* @return {Promise<any>}
*/
@Cordova()
getFocusMode(): Promise<any> { return; }
/**
* Set the focus mode
* @param [focusMode] {string} 'fixed', 'auto', 'continuous-picture', 'continuous-video' (iOS & Android), 'edof', 'infinity', 'macro' (Android Only)
* @return {Promise<any>}
*/
@Cordova({
successIndex: 1,
errorIndex: 2
})
setFocusMode(focusMode?: string): Promise<any> { return; }
/**
* Get supported focus modes
* @return {Promise<any>}
*/
@Cordova()
getSupportedFocusModes(): Promise<any> { return; }
/**
* Get the current flash mode
* @return {Promise<any>}
*/
@Cordova()
getFlashMode(): Promise<any> { return; }
/**
* Set the flashmode
* @param [flashMode] {string} 'off' (iOS & Android), 'on' (iOS & Android), 'auto' (iOS & Android), 'torch' (Android)
@@ -244,4 +319,77 @@ export class CameraPreview {
})
setFlashMode(flashMode?: string): Promise<any> { return; }
/**
* Get supported flash modes
* @return {Promise<any>}
*/
@Cordova()
getSupportedFlashModes(): Promise<any> { return; }
/**
* Get supported picture sizes
* @return {Promise<any>}
*/
@Cordova()
getSupportedPictureSizes(): Promise<any> { return; }
/**
* Get exposure mode
* @return {Promise<any>}
*/
@Cordova()
getExposureMode(): Promise<any> { return; }
/**
* Get exposure modes
* @return {Promise<any>}
*/
@Cordova()
getExposureModes(): Promise<any> { return; }
/**
* Set exposure mode
* @param [lock] {string}
* @return {Promise<any>}
*/
@Cordova({
successIndex: 1,
errorIndex: 2
})
setExposureMode(lock?: string): Promise<any> { return; }
/**
* Get exposure compensation (Android)
* @return {Promise<any>}
*/
@Cordova()
getExposureCompensation(): Promise<any> { return; }
/**
* Set exposure compensation (Android)
* @param [exposureCompensation] {number}
* @return {Promise<any>}
*/
@Cordova({
successIndex: 1,
errorIndex: 2
})
setExposureCompensation(exposureCompensation?: number): Promise<any> { return; }
/**
* Get exposure compensation range (Android)
* @return {Promise<any>}
*/
@Cordova()
getExposureCompensationRange(): Promise<any> { return; }
/**
* Set specific focus point. Note, this assumes the camera is full-screen.
* @param xPoint {number}
* @param yPoint {number}
* @return {Promise<any>}
*/
@Cordova()
tapToFocus(xPoint: number, yPoint: number): Promise<any> { return; }
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface CameraOptions {
/** Picture quality in range 0-100. Default is 50 */
@@ -128,7 +128,7 @@ export interface CameraPopoverOptions {
platforms: ['Android', 'BlackBerry', 'Browser', 'Firefox', 'FireOS', 'iOS', 'Windows', 'Windows Phone 8', 'Ubuntu']
})
@Injectable()
export class Camera {
export class Camera extends IonicNativePlugin {
/**
* Constant for possible destination types

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface CardIOOptions {
@@ -133,7 +133,7 @@ export interface CardIOResponse {
* @name Card IO
* @description
* @usage
* ```
* ```typescript
* import { CardIO } from '@ionic-native/card-io';
*
* constructor(private cardIO: CardIO) { }
@@ -167,7 +167,7 @@ export interface CardIOResponse {
platforms: ['iOS', 'Android']
})
@Injectable()
export class CardIO {
export class CardIO extends IonicNativePlugin {
/**
* Check whether card scanning is currently available. (May vary by

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Clipboard
* @description
@@ -37,7 +37,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Amazon Fire OS', 'iOS', 'Android', 'BlackBerry 10', 'Windows Phone 7', 'Windows Phone 8', 'Windows', 'Firefox OS', 'Browser']
})
@Injectable()
export class Clipboard {
export class Clipboard extends IonicNativePlugin {
/**
* Copies the given text

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
namespace Http {
export const enum Verb {
@@ -109,8 +109,8 @@ interface LocalPackage_Static {
}
/* tslint:enable */
declare var RemotePackage: RemotePackage_Static;
declare var LocalPackage: LocalPackage_Static;
declare const RemotePackage: RemotePackage_Static;
declare const LocalPackage: LocalPackage_Static;
/**
* Defines the JSON format of the current package information file.
@@ -427,7 +427,7 @@ export interface DownloadProgress {
platforms: ['Android', 'iOS']
})
@Injectable()
export class CodePush {
export class CodePush extends IonicNativePlugin {
/**
* Get the current package information.

View File

@@ -1,7 +1,7 @@
import { Injectable } from '@angular/core';
import { CordovaInstance, InstanceProperty, Plugin, getPromise, InstanceCheck, checkAvailability, CordovaCheck } from '@ionic-native/core';
import { CordovaInstance, InstanceProperty, Plugin, getPromise, InstanceCheck, checkAvailability, CordovaCheck, IonicNativePlugin } from '@ionic-native/core';
declare var window: any,
declare const window: any,
navigator: any;
export type ContactFieldType = '*' | 'addresses' | 'birthday' | 'categories' | 'country' | 'department' | 'displayName' | 'emails' | 'familyName' | 'formatted' | 'givenName' | 'honorificPrefix' | 'honorificSuffix' | 'id' | 'ims' | 'locality' | 'middleName' | 'name' | 'nickname' | 'note' | 'organizations' | 'phoneNumbers' | 'photos' | 'postalCode' | 'region' | 'streetAddress' | 'title' | 'urls';
@@ -49,6 +49,7 @@ export interface IContactProperties {
/** An array of web pages associated with the contact. */
urls?: IContactField[];
}
/**
@@ -71,6 +72,8 @@ export class Contact implements IContactProperties {
@InstanceProperty categories: IContactField[];
@InstanceProperty urls: IContactField[];
[key: string]: any;
constructor() {
if (checkAvailability('navigator.contacts', 'create', 'Contacts') === true) {
this._objectInstance = navigator.contacts.create();
@@ -79,7 +82,7 @@ export class Contact implements IContactProperties {
@InstanceCheck()
clone(): Contact {
let newContact = new Contact();
let newContact: any = new Contact();
for (let prop in this) {
if (prop === 'id') return;
newContact[prop] = this[prop];
@@ -92,8 +95,8 @@ export class Contact implements IContactProperties {
@InstanceCheck()
save(): Promise<any> {
return getPromise((resolve, reject) => {
this._objectInstance.save((contact) => {
return getPromise((resolve: Function, reject: Function) => {
this._objectInstance.save((contact: any) => {
this._objectInstance = contact;
resolve(this);
}, reject);
@@ -114,7 +117,7 @@ export interface IContactError {
/**
* @hidden
*/
export declare var ContactError: {
export declare const ContactError: {
new (code: number): IContactError;
UNKNOWN_ERROR: number;
INVALID_ARGUMENT_ERROR: number;
@@ -145,16 +148,16 @@ export interface IContactName {
*/
export class ContactName implements IContactName {
constructor(public formatted?: string,
public familyName?: string,
public givenName?: string,
public middleName?: string,
public honorificPrefix?: string,
public honorificSuffix?: string) {}
public familyName?: string,
public givenName?: string,
public middleName?: string,
public honorificPrefix?: string,
public honorificSuffix?: string) { }
}
export interface IContactField {
/** A string that indicates what type of field this is, home for example. */
type?: string;
type?: string;
/** The value of the field, such as a phone number or email address. */
value?: string;
/** Set to true if this ContactField contains the user's preferred value. */
@@ -166,15 +169,15 @@ export interface IContactField {
*/
export class ContactField implements IContactField {
constructor(public type?: string,
public value?: string,
public pref?: boolean) {}
public value?: string,
public pref?: boolean) { }
}
export interface IContactAddress {
/** Set to true if this ContactAddress contains the user's preferred value. */
pref?: boolean;
/** A string indicating what type of field this is, home for example. */
type?: string;
type?: string;
/** The full address formatted for display. */
formatted?: string;
/** The full street address. */
@@ -194,20 +197,20 @@ export interface IContactAddress {
*/
export class ContactAddress implements IContactAddress {
constructor(public pref?: boolean,
public type?: string,
public formatted?: string,
public streetAddress?: string,
public locality?: string,
public region?: string,
public postalCode?: string,
public country?: string) {}
public type?: string,
public formatted?: string,
public streetAddress?: string,
public locality?: string,
public region?: string,
public postalCode?: string,
public country?: string) { }
}
export interface IContactOrganization {
/** Set to true if this ContactOrganization contains the user's preferred value. */
pref?: boolean;
/** A string that indicates what type of field this is, home for example. */
type?: string;
type?: string;
/** The name of the organization. */
name?: string;
/** The department the contract works for. */
@@ -226,7 +229,7 @@ export class ContactOrganization implements IContactOrganization {
public department?: string,
public title?: string,
public pref?: boolean
) {}
) { }
}
/** Search options to filter navigator.contacts. */
@@ -248,9 +251,9 @@ export interface IContactFindOptions {
*/
export class ContactFindOptions implements IContactFindOptions {
constructor(public filter?: string,
public multiple?: boolean,
public desiredFields?: string[],
public hasPhoneNumber?: boolean) {}
public multiple?: boolean,
public desiredFields?: string[],
public hasPhoneNumber?: boolean) { }
}
/**
@@ -294,7 +297,7 @@ export class ContactFindOptions implements IContactFindOptions {
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows 8', 'Windows Phone']
})
@Injectable()
export class Contacts {
export class Contacts extends IonicNativePlugin {
/**
* Create a single contact.
@@ -312,8 +315,8 @@ export class Contacts {
*/
@CordovaCheck()
find(fields: ContactFieldType[], options?: IContactFindOptions): Promise<Contact[]> {
return getPromise((resolve, reject) => {
navigator.contacts.find(fields, (contacts) => {
return getPromise((resolve: Function, reject: Function) => {
navigator.contacts.find(fields, (contacts: any[]) => {
resolve(contacts.map(processContact));
}, reject, options);
});
@@ -325,8 +328,8 @@ export class Contacts {
*/
@CordovaCheck()
pickContact(): Promise<Contact> {
return getPromise((resolve, reject) => {
navigator.contacts.pickContact((contact) => resolve(processContact(contact)), reject);
return getPromise((resolve: Function, reject: Function) => {
navigator.contacts.pickContact((contact: any) => resolve(processContact(contact)), reject);
});
}
@@ -335,7 +338,7 @@ export class Contacts {
/**
* @hidden
*/
function processContact(contact) {
function processContact(contact: any) {
let newContact = new Contact();
for (let prop in contact) {
if (typeof contact[prop] === 'function') continue;

View File

@@ -1,4 +1,4 @@
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
@@ -8,7 +8,7 @@ import { Injectable } from '@angular/core';
* Plugin to install Couchbase Lite in your PhoneGap app on iOS or Android
*
* @usage
* ```
* ```typescript
* import { CouchbaseLite } from '@ionic-native/couchbase-lite';
*
* constructor(private couchbase: CouchbaseLite) {
@@ -23,13 +23,13 @@ import { Injectable } from '@angular/core';
*/
@Plugin({
pluginName: 'CouchbaseLite',
plugin: 'https://github.com/couchbaselabs/Couchbase-Lite-PhoneGap-Plugin',
plugin: 'https://github.com/couchbaselabs/Couchbase-Lite-PhoneGap-Plugin.git',
pluginRef: 'cblite',
repo: 'https://github.com/couchbaselabs/Couchbase-Lite-PhoneGap-Plugin',
platforms: ['Android', 'iOS']
})
@Injectable()
export class CouchbaseLite {
export class CouchbaseLite extends IonicNativePlugin {
/**
* Get the database url
@@ -38,6 +38,6 @@ export class CouchbaseLite {
@Cordova({
callbackStyle: 'node'
})
getURL(): Promise<any> { return; }
getURL(): Promise<any> { return; }
}

View File

@@ -1,12 +1,12 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Crop
* @description Crops images
* @usage
* ```
* import {Crop} from '@ionic-native/crop';
* ```typescript
* import { Crop } from '@ionic-native/crop';
*
* constructor(private crop: Crop) { }
*
@@ -14,8 +14,8 @@ import { Cordova, Plugin } from '@ionic-native/core';
*
* this.crop.crop('path/to/image.jpg', {quality: 75})
* .then(
* newImage => console.log("new image path is: " + newImage),
* error => console.error("Error cropping image", error)
* newImage => console.log('new image path is: ' + newImage),
* error => console.error('Error cropping image', error)
* );
* ```
*/
@@ -27,7 +27,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android', 'iOS']
})
@Injectable()
export class Crop {
export class Crop extends IonicNativePlugin {
/**
* Crops an image
@@ -38,6 +38,6 @@ export class Crop {
@Cordova({
callbackOrder: 'reverse'
})
crop(pathToImage: string, options?: {quality: number}): Promise<string> { return; }
crop(pathToImage: string, options?: { quality: number }): Promise<string> { return; }
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import {Cordova, Plugin} from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface DatePickerOptions {
/**
@@ -154,7 +154,7 @@ export interface DatePickerOptions {
platforms: ['Android', 'iOS', 'Windows']
})
@Injectable()
export class DatePicker {
export class DatePicker extends IonicNativePlugin {
/**
* @hidden

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
/**
@@ -42,7 +42,7 @@ import { Observable } from 'rxjs/Observable';
platforms: ['iOS', 'Android']
})
@Injectable()
export class DBMeter {
export class DBMeter extends IonicNativePlugin {
/**
* Starts listening

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface DeeplinkMatch {
@@ -67,7 +67,7 @@ export interface DeeplinkMatch {
* });
* ```
*
* See the [Ionic 2 Deeplinks Demo](https://github.com/driftyco/ionic2-deeplinks-demo/blob/master/app/app.ts) for an example of how to
* See the [Ionic 2 Deeplinks Demo](https://github.com/ionic-team/ionic2-deeplinks-demo/blob/master/app/app.ts) for an example of how to
* retrieve the `NavController` reference at runtime.
*
* @interfaces
@@ -77,18 +77,18 @@ export interface DeeplinkMatch {
pluginName: 'Deeplinks',
plugin: 'ionic-plugin-deeplinks',
pluginRef: 'IonicDeeplink',
repo: 'https://github.com/driftyco/ionic-plugin-deeplinks',
platforms: ['iOS', 'Android', 'Browser'],
install: 'ionic plugin add ionic-plugin-deeplinks --variable URL_SCHEME=myapp --variable DEEPLINK_SCHEME=https --variable DEEPLINK_HOST=example.com --variable ANDROID_PATH_PREFIX=/',
installVariables: ['URL_SCHEME', 'DEEPLINK_SCHEME', 'DEEPLINK_HOST', 'ANDROID_PATH_PREFIX']
repo: 'https://github.com/ionic-team/ionic-plugin-deeplinks',
install: 'ionic cordova plugin add ionic-plugin-deeplinks --variable URL_SCHEME=myapp --variable DEEPLINK_SCHEME=https --variable DEEPLINK_HOST=example.com --variable ANDROID_PATH_PREFIX=/',
installVariables: ['URL_SCHEME', 'DEEPLINK_SCHEME', 'DEEPLINK_HOST', 'ANDROID_PATH_PREFIX'],
platforms: ['iOS', 'Android', 'Browser']
})
@Injectable()
export class Deeplinks {
export class Deeplinks extends IonicNativePlugin {
/**
* Define a set of paths to match against incoming deeplinks.
*
* @param {paths} Define a set of paths to match against incoming deeplinks.
* @param {paths} paths Define a set of paths to match against incoming deeplinks.
* paths takes an object of the form { 'path': data }. If a deeplink
* matches the path, the resulting path-data pair will be returned in the
* promise result which you can then use to navigate in the app as you see fit.
@@ -98,7 +98,7 @@ export class Deeplinks {
@Cordova({
observable: true
})
route(paths): Observable<DeeplinkMatch> { return; }
route(paths: any): Observable<DeeplinkMatch> { return; }
/**
*
@@ -110,17 +110,19 @@ export class Deeplinks {
* This handler will automatically navigate when a route matches. If you need finer-grained
* control over the behavior of a matching deeplink, use the plain `route` method.
*
* @param {paths} Define a set of paths to match against incoming deeplinks.
* @param {Nav} navController Define a set of paths to match against incoming deeplinks.
* paths takes an object of the form { 'path': data }. If a deeplink
* matches the path, the resulting path-data pair will be returned in the
* promise result which you can then use to navigate in the app as you see fit.
*
* @param {Object} paths
*
* @returns {Observable<DeeplinkMatch>} Returns an Observable that resolves each time a deeplink comes through, and
* errors if a deeplink comes through that does not match a given path.
*/
@Cordova({
observable: true
})
routeWithNavController(navController, paths): Observable<DeeplinkMatch> { return; }
routeWithNavController(navController: any, paths: any): Observable<DeeplinkMatch> { return; }
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Device Accounts
@@ -28,7 +28,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android']
})
@Injectable()
export class DeviceAccounts {
export class DeviceAccounts extends IonicNativePlugin {
/**
* Gets all accounts registered on the Android Device

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Device Feedback
* @description
@@ -7,7 +7,7 @@ import { Plugin, Cordova } from '@ionic-native/core';
* Plugin that lets you provide haptic or acoustic feedback on Android devices.
*
* @usage
* ```
* ```typescript
* import { DeviceFeedback } from '@ionic-native/device-feedback';
*
* constructor(private deviceFeedback: DeviceFeedback) { }
@@ -38,7 +38,7 @@ import { Plugin, Cordova } from '@ionic-native/core';
platforms: ['Android']
})
@Injectable()
export class DeviceFeedback {
export class DeviceFeedback extends IonicNativePlugin {
/**
* Provide sound feedback to user, nevertheless respect user's settings and current active device profile as native feedback do.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface DeviceMotionAccelerationData {
@@ -75,7 +75,7 @@ export interface DeviceMotionAccelerometerOptions {
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class DeviceMotion {
export class DeviceMotion extends IonicNativePlugin {
/**
* Get the current acceleration along the x, y, and z axes.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface DeviceOrientationCompassHeading {
@@ -80,7 +80,7 @@ export interface DeviceOrientationCompassOptions {
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class DeviceOrientation {
export class DeviceOrientation extends IonicNativePlugin {
/**
* Get the current compass heading.

View File

@@ -1,7 +1,7 @@
import { Injectable } from '@angular/core';
import { CordovaProperty, Plugin } from '@ionic-native/core';
import { CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core';
declare var window: any;
declare const window: any;
/**
* @name Device
@@ -24,10 +24,10 @@ declare var window: any;
plugin: 'cordova-plugin-device',
pluginRef: 'device',
repo: 'https://github.com/apache/cordova-plugin-device',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'OS X', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'macOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class Device {
export class Device extends IonicNativePlugin {
/** Get the version of Cordova running on the device. */
@CordovaProperty

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import {Cordova, Plugin, CordovaProperty} from '@ionic-native/core';
import { Cordova, Plugin, CordovaProperty, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Diagnostic
@@ -42,7 +42,7 @@ import {Cordova, Plugin, CordovaProperty} from '@ionic-native/core';
platforms: ['Android', 'iOS', 'Windows']
})
@Injectable()
export class Diagnostic {
export class Diagnostic extends IonicNativePlugin {
permission = {
READ_CALENDAR: 'READ_CALENDAR',
@@ -144,10 +144,12 @@ export class Diagnostic {
/**
* Checks if the device has a camera. On Android this returns true if the device has a camera. On iOS this returns true if both the device has a camera AND the application is authorized to use it. On Windows 10 Mobile this returns true if both the device has a rear-facing camera AND the
* application is authorized to use it.
* @param {boolean} [externalStorage] Android only: If true, checks permission for READ_EXTERNAL_STORAGE in addition to CAMERA run-time permission.
* cordova-plugin-camera@2.2+ requires both of these permissions. Defaults to true.
* @returns {Promise<any>}
*/
@Cordova()
isCameraAvailable(): Promise<any> { return; }
@Cordova({ callbackOrder: 'reverse' })
isCameraAvailable( externalStorage?: boolean ): Promise<any> { return; }
/**
* Checks if the device has Bluetooth capabilities and if so that Bluetooth is switched on (same on Android, iOS and Windows 10 Mobile)
@@ -251,24 +253,30 @@ export class Diagnostic {
/**
* Checks if the application is authorized to use the camera.
* Note for Android: this is intended for Android 6 / API 23 and above. Calling on Android 5 / API 22 and below will always return TRUE as permissions are already granted at installation time.
* @param {boolean} [externalStorage] Android only: If true, checks permission for READ_EXTERNAL_STORAGE in addition to CAMERA run-time permission.
* cordova-plugin-camera@2.2+ requires both of these permissions. Defaults to true.
* @returns {Promise<any>}
*/
@Cordova({ platforms: ['Android', 'iOS'] })
isCameraAuthorized(): Promise<any> { return; }
@Cordova({ platforms: ['Android', 'iOS'], callbackOrder: 'reverse' })
isCameraAuthorized( externalStorage?: boolean ): Promise<any> { return; }
/**
* Returns the camera authorization status for the application.
* @param {boolean} [externalStorage] Android only: If true, checks permission for READ_EXTERNAL_STORAGE in addition to CAMERA run-time permission.
* cordova-plugin-camera@2.2+ requires both of these permissions. Defaults to true.
* @returns {Promise<any>}
*/
@Cordova({ platforms: ['Android', 'iOS'] })
getCameraAuthorizationStatus(): Promise<any> { return; }
@Cordova({ platforms: ['Android', 'iOS'], callbackOrder: 'reverse' })
getCameraAuthorizationStatus( externalStorage?: boolean ): Promise<any> { return; }
/**
* Requests camera authorization for the application.
* @param {boolean} [externalStorage] Android only: If true, requests permission for READ_EXTERNAL_STORAGE in addition to CAMERA run-time permission.
* cordova-plugin-camera@2.2+ requires both of these permissions. Defaults to true.
* @returns {Promise<any>}
*/
@Cordova({ platforms: ['Android', 'iOS'] })
requestCameraAuthorization(): Promise<any> { return; }
@Cordova({ platforms: ['Android', 'iOS'], callbackOrder: 'reverse' })
requestCameraAuthorization( externalStorage?: boolean ): Promise<any> { return; }
/**
* Checks if the application is authorized to use the microphone.
@@ -614,10 +622,10 @@ export class Diagnostic {
/**
* Returns the authorization status for the application to use the Camera Roll in Photos app.
* @returns {Promise<boolean>}
* @returns {Promise<string>}
*/
@Cordova({ platforms: ['iOS'] })
getCameraRollAuthorizationStatus(): Promise<boolean> { return; }
getCameraRollAuthorizationStatus(): Promise<string> { return; }
/**
* Requests camera roll authorization for the application.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface DialogsPromptCallback {
@@ -45,11 +45,11 @@ export interface DialogsPromptCallback {
pluginName: 'Dialogs',
plugin: 'cordova-plugin-dialogs',
pluginRef: 'navigator.notification',
repo: 'https://github.com/apache/cordova-plugin-dialogs.git',
platforms: ['Android', 'BlackBerry 10', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone']
repo: 'https://github.com/apache/cordova-plugin-dialogs',
platforms: ['Amazon Fire OS', 'Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Windows Phone 7', 'Windows Phone 8', 'Windows']
})
@Injectable()
export class Dialogs {
export class Dialogs extends IonicNativePlugin {
/**
* Shows a custom alert or dialog box.
@@ -69,13 +69,13 @@ export class Dialogs {
* @param {string} message Dialog message.
* @param {string} title Dialog title. (Optional, defaults to Confirm)
* @param {Array<string>} buttonLabels Array of strings specifying button labels. (Optional, defaults to [OK,Cancel])
* @returns {Promise<number>} Returns a promise that resolves the button index that was clicked. Note that the index use one-based indexing.
* @returns {Promise<number>} Returns a promise that resolves the button index that was clicked, or 0 if the user has dismissed the dialog by clicking outside the dialog box. Note that the index use one-based indexing.
*/
@Cordova({
successIndex: 1,
errorIndex: 4
})
confirm(message, title?: string, buttonLabels?: string[]): Promise<number> { return; }
confirm(message: string, title?: string, buttonLabels?: string[]): Promise<number> { return; }
/**
* Displays a native dialog box that is more customizable than the browser's prompt function.

View File

@@ -0,0 +1,102 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
export interface DocumentViewerOptions {
title: string;
documentView: {
closeLabel: string;
};
navigationView: {
closeLabel: string;
};
email: {
enabled: boolean;
};
print: {
enabled: boolean;
};
openWith: {
enabled: boolean;
};
bookmarks: {
enabled: boolean;
};
search: {
enabled: boolean;
};
autoClose: {
onPause: boolean;
};
}
/**
* @name Document Viewer
* @description
* This plugin offers a slim API to view PDF files which are either stored in the apps assets folder (/www/*) or in any other file system directory available via the cordova file plugin.
*
* @usage
* ```typescript
* import { DocumentViewer } from '@ionic-native/document-viewer';
*
*
* constructor(private document: DocumentViewer) { }
*
* ...
* const options: DocumentViewerOptions = {
* title: 'My PDF'
* }
*
* this.document.viewDocument('assets/myFile.pdf', 'application/pdf', options)
*
* ```
*
* @interfaces
* DocumentViewerOptions
*/
@Plugin({
pluginName: 'Document Viewer',
plugin: 'cordova-plugin-document-viewer',
pluginRef: 'SitewaertsDocumentViewer',
repo: 'https://github.com/sitewaerts/cordova-plugin-document-viewer',
platforms: ['Android', 'iOS', 'Windows']
})
@Injectable()
export class DocumentViewer extends IonicNativePlugin {
/**
* Displays the email composer pre-filled with data.
*
* @returns {Promise<any>} Resolves promise when the EmailComposer has been opened
*/
@Cordova()
getSupportInfo(): Promise<any> { return; }
/**
* Check if the document can be shown
*
* @param url {string} Url to the file
* @param contentType {string} Content type of the file
* @param options {Array<DocumentViewerOptions>} options
* @param [onPossible] {Function}
* @param [onMissingApp] {Function}
* @param [onImpossible] {Function}
* @param [onError] {Function}
*/
@Cordova({ sync: true })
canViewDocument(url: string, contentType: string, options: DocumentViewerOptions, onPossible?: Function, onMissingApp?: Function, onImpossible?: Function, onError?: Function): void { }
/**
* Opens the file
*
* @param url {string} Url to the file
* @param contentType {string} Content type of the file
* @param options {DocumentViewerOptions} options
* @param [onShow] {Function}
* @param [onClose] {Function}
* @param [onMissingApp] {Function}
* @param [onError] {Function}
*/
@Cordova({ sync: true })
viewDocument(url: string, contentType: string, options: DocumentViewerOptions, onShow?: Function, onClose?: Function, onMissingApp?: Function, onError?: Function): void { }
}

View File

@@ -1,7 +1,11 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, CordovaCheck } from '@ionic-native/core';
import { Cordova, Plugin, CordovaCheck, IonicNativePlugin } from '@ionic-native/core';
declare var cordova: any;
interface Cordova {
plugins: CordovaPlugins & { email: any };
}
declare const cordova: Cordova;
export interface EmailComposerOptions {
@@ -25,14 +29,11 @@ export interface EmailComposerOptions {
/**
* @beta
* @name Email Composer
* @description
*
* Requires Cordova plugin: cordova-plugin-email-composer. For more info, please see the [Email Composer plugin docs](https://github.com/hypery2k/cordova-email-plugin).
*
* DISCLAIMER: This plugin is experiencing issues with the latest versions of Cordova. Use at your own risk. Functionality is not guaranteed. Please stay tuned for a more stable version.
* A good alternative to this plugin is the social sharing plugin.
*
* @usage
* ```typescript
@@ -79,7 +80,7 @@ export interface EmailComposerOptions {
platforms: ['Android', 'iOS']
})
@Injectable()
export class EmailComposer {
export class EmailComposer extends IonicNativePlugin {
/**
* Verifies if sending emails is supported on the device.
@@ -91,7 +92,7 @@ export class EmailComposer {
isAvailable(app?: string): Promise<any> {
return new Promise<boolean>((resolve, reject) => {
if (app) {
cordova.plugins.email.isAvailable(app, (isAvailable) => {
cordova.plugins.email.isAvailable(app, (isAvailable: boolean) => {
if (isAvailable) {
resolve();
} else {
@@ -99,7 +100,7 @@ export class EmailComposer {
}
});
} else {
cordova.plugins.email.isAvailable((isAvailable) => {
cordova.plugins.email.isAvailable((isAvailable: boolean) => {
if (isAvailable) {
resolve();
} else {

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface EstimoteBeaconRegion {
@@ -47,7 +47,7 @@ export interface EstimoteBeaconRegion {
platforms: ['iOS', 'Android']
})
@Injectable()
export class EstimoteBeacons {
export class EstimoteBeacons extends IonicNativePlugin {
/** Proximity value */
ProximityUnknown = 0;

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface FacebookLoginResponse {
@@ -43,7 +43,7 @@ export interface FacebookLoginResponse {
* Then type in the following command in your Terminal, where APP_ID and APP_NAME are the values from the Facebook Developer portal.
*
* ```bash
* ionic plugin add cordova-plugin-facebook4 --save --variable APP_ID="123456789" --variable APP_NAME="myApplication"
* ionic plugin add cordova-plugin-facebook4 --variable APP_ID="123456789" --variable APP_NAME="myApplication"
* ```
*
* After, you'll need to add the native platforms you'll be using to your app in the Facebook Developer portal under your app's Settings:
@@ -104,6 +104,8 @@ export interface FacebookLoginResponse {
* .catch(e => console.log('Error logging into Facebook', e));
*
*
* this.fb.logEvent(this.fb.EVENTS.EVENT_NAME_ADDED_TO_CART);
*
* ```
*
*/
@@ -112,12 +114,47 @@ export interface FacebookLoginResponse {
plugin: 'cordova-plugin-facebook4',
pluginRef: 'facebookConnectPlugin',
repo: 'https://github.com/jeduan/cordova-plugin-facebook4',
install: 'ionic plugin add cordova-plugin-facebook4 --variable APP_ID="123456789" --variable APP_NAME="myApplication"',
install: 'ionic cordova plugin add cordova-plugin-facebook4 --variable APP_ID="123456789" --variable APP_NAME="myApplication"',
installVariables: ['APP_ID', 'APP_NAME'],
platforms: ['Android', 'iOS']
})
@Injectable()
export class Facebook {
export class Facebook extends IonicNativePlugin {
EVENTS: {
EVENT_NAME_ACTIVATED_APP: 'fb_mobile_activate_app',
EVENT_NAME_DEACTIVATED_APP: 'fb_mobile_deactivate_app',
EVENT_NAME_SESSION_INTERRUPTIONS: 'fb_mobile_app_interruptions',
EVENT_NAME_TIME_BETWEEN_SESSIONS: 'fb_mobile_time_between_sessions',
EVENT_NAME_COMPLETED_REGISTRATION: 'fb_mobile_complete_registration',
EVENT_NAME_VIEWED_CONTENT: 'fb_mobile_content_view',
EVENT_NAME_SEARCHED: 'fb_mobile_search',
EVENT_NAME_RATED: 'fb_mobile_rate',
EVENT_NAME_COMPLETED_TUTORIAL: 'fb_mobile_tutorial_completion',
EVENT_NAME_PUSH_TOKEN_OBTAINED: 'fb_mobile_obtain_push_token',
EVENT_NAME_ADDED_TO_CART: 'fb_mobile_add_to_cart',
EVENT_NAME_ADDED_TO_WISHLIST: 'fb_mobile_add_to_wishlist',
EVENT_NAME_INITIATED_CHECKOUT: 'fb_mobile_initiated_checkout',
EVENT_NAME_ADDED_PAYMENT_INFO: 'fb_mobile_add_payment_info',
EVENT_NAME_PURCHASED: 'fb_mobile_purchase',
EVENT_NAME_ACHIEVED_LEVEL: 'fb_mobile_level_achieved',
EVENT_NAME_UNLOCKED_ACHIEVEMENT: 'fb_mobile_achievement_unlocked',
EVENT_NAME_SPENT_CREDITS: 'fb_mobile_spent_credits',
EVENT_PARAM_CURRENCY: 'fb_currency',
EVENT_PARAM_REGISTRATION_METHOD: 'fb_registration_method',
EVENT_PARAM_CONTENT_TYPE: 'fb_content_type',
EVENT_PARAM_CONTENT_ID: 'fb_content_id',
EVENT_PARAM_SEARCH_STRING: 'fb_search_string',
EVENT_PARAM_SUCCESS: 'fb_success',
EVENT_PARAM_MAX_RATING_VALUE: 'fb_max_rating_value',
EVENT_PARAM_PAYMENT_INFO_AVAILABLE: 'fb_payment_info_available',
EVENT_PARAM_NUM_ITEMS: 'fb_num_items',
EVENT_PARAM_LEVEL: 'fb_level',
EVENT_PARAM_DESCRIPTION: 'fb_description',
EVENT_PARAM_SOURCE_APPLICATION: 'fb_mobile_launch_source',
EVENT_PARAM_VALUE_YES: '1',
EVENT_PARAM_VALUE_NO: '0'
};
/**
* Browser wrapper
@@ -135,16 +172,17 @@ export class Facebook {
*
* ```typescript
* {
* status: "connected",
* status: 'connected',
* authResponse: {
* session_key: true,
* accessToken: "kgkh3g42kh4g23kh4g2kh34g2kg4k2h4gkh3g4k2h4gk23h4gk2h34gk234gk2h34AndSoOn",
* accessToken: 'kgkh3g42kh4g23kh4g2kh34g2kg4k2h4gkh3g4k2h4gk23h4gk2h34gk234gk2h34AndSoOn',
* expiresIn: 5183979,
* sig: "...",
* secret: "...",
* userID: "634565435"
* sig: '...',
* secret: '...',
* userID: '634565435'
* }
* }
*
* ```
*
* @param {string[]} permissions List of [permissions](https://developers.facebook.com/docs/facebook-login/permissions) this app has upon logging in.
@@ -174,13 +212,13 @@ export class Facebook {
* ```
* {
* authResponse: {
* userID: "12345678912345",
* accessToken: "kgkh3g42kh4g23kh4g2kh34g2kg4k2h4gkh3g4k2h4gk23h4gk2h34gk234gk2h34AndSoOn",
* userID: '12345678912345',
* accessToken: 'kgkh3g42kh4g23kh4g2kh34g2kg4k2h4gkh3g4k2h4gk23h4gk2h34gk234gk2h34AndSoOn',
* session_Key: true,
* expiresIn: "5183738",
* sig: "..."
* expiresIn: '5183738',
* sig: '...'
* },
* status: "connected"
* status: 'connected'
* }
* ```
*
@@ -204,10 +242,10 @@ export class Facebook {
*
* ```
* {
* method: "share",
* href: "http://example.com",
* caption: "Such caption, very feed.",
* description: "Much description",
* method: 'share',
* href: 'http://example.com',
* caption: 'Such caption, very feed.',
* description: 'Much description',
* picture: 'http://example.com/image.png'
* }
* ```

View File

@@ -0,0 +1,118 @@
import { Plugin, IonicNativePlugin, Cordova } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
export interface NotificationData {
/**
* Determines whether the notification was pressed or not
*/
wasTapped: boolean;
/**
* Notification data hash item
*/
[name: string]: any;
}
/**
* @name FCM
* @description
* Provides basic functionality for Firebase Cloud Messaging
*
* @usage
* ```typescript
* import { FCM } from '@ionic-native/fcm';
*
* constructor(private fcm: FCM) {}
*
* ...
*
* fcm.subscribeToTopic('marketing');
*
* fcm.getToken().then(token=>{
* backend.registerToken(token);
* })
*
* fcm.onNotification().subscribe(data=>{
* if(data.wasTapped){
* console.log("Received in background");
* } else {
* console.log("Received in foreground");
* };
* })
*
* fcm.onTokenRefresh().subscribe(token=>{
* backend.registerToken(token);
* })
*
* fcm.unsubscribeFromTopic('marketing');
*
* ```
* @interfaces
* NotificationData
*/
@Plugin({
pluginName: 'FCM',
plugin: 'cordova-plugin-fcm',
pluginRef: 'FCMPlugin',
repo: 'https://github.com/fechanique/cordova-plugin-fcm',
platforms: ['iOS', 'Android']
})
@Injectable()
export class FCM extends IonicNativePlugin {
/**
* Get's device's current registration id
*
* @returns {Promise<string>} Returns a Promise that resolves with the registration id token
*/
@Cordova()
getToken(): Promise<string> { return; }
/**
* Event firing on the token refresh
*
* @returns {Observable<string>} Returns an Observable that notifies with the change of device's registration id
*/
@Cordova({
observable: true
})
onTokenRefresh(): Observable<string> { return; }
/**
* Subscribes you to a [topic](https://firebase.google.com/docs/notifications/android/console-topics)
*
* @param {string} topic Topic to be subscribed to
*
* @returns {Promise<any>} Returns a promise resolving in result of subscribing to a topic
*/
@Cordova()
subscribeToTopic(topic: string): Promise<any> { return; }
/**
* Unubscribes you from a [topic](https://firebase.google.com/docs/notifications/android/console-topics)
*
* @param {string} topic Topic to be unsubscribed from
*
* @returns {Promise<any>} Returns a promise resolving in result of unsubscribing from a topic
*/
@Cordova()
unsubscribeFromTopic(topic: string): Promise<any> { return; }
/**
* Watch for incoming notifications
*
* @returns {Observable<any>} returns an object with data from the notification
*/
@Cordova({
observable: true,
successIndex: 0,
errorIndex: 2
})
onNotification(): Observable<NotificationData> { return; }
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
* @name File Chooser
@@ -8,7 +8,7 @@ import { Plugin, Cordova } from '@ionic-native/core';
* Opens the file picker on Android for the user to select a file, returns a file URI.
*
* @usage
* ```
* ```typescript
* import { FileChooser } from '@ionic-native/file-chooser';
*
* constructor(private fileChooser: FileChooser) { }
@@ -23,13 +23,13 @@ import { Plugin, Cordova } from '@ionic-native/core';
*/
@Plugin({
pluginName: 'FileChooser',
plugin: 'http://github.com/don/cordova-filechooser.git',
plugin: 'https://github.com/don/cordova-filechooser.git',
pluginRef: 'fileChooser',
repo: 'https://github.com/don/cordova-filechooser',
platforms: ['Android']
})
@Injectable()
export class FileChooser {
export class FileChooser extends IonicNativePlugin {
/**
* Open a file

View File

@@ -0,0 +1,52 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
* @name File Encryption
* @description
* Simple file encryption for Cordova.
*
* @usage
* ```typescript
* import { FileEncryption } from '@ionic-native/file-encryption';
*
*
* constructor(private fileEncryption: FileEncryption) { }
*
* ...
*
* this.fileEncryption.decrypt('assets/json/topSecret.json', 'secretKey');
*
* this.fileEncryption.encrypt('assets/json/topSecret.json', 'secretKey');
*
* ```
*/
@Plugin({
pluginName: 'FileEncryption',
plugin: 'cordova-safe',
pluginRef: 'cordova.plugins.disusered',
repo: 'https://github.com/disusered/cordova-safe',
platforms: ['Android', 'iOS']
})
@Injectable()
export class FileEncryption extends IonicNativePlugin {
/**
* Enrcypt a file
* @param file {string} A string representing a local URI
* @param key {string} A key for the crypto operations
* @return {Promise<any>} Returns a promise that resolves when something happens
*/
@Cordova()
encrypt(file: string, key: string): Promise<any> { return; }
/**
* Decrypt a file
* @param file {string} A string representing a local URI
* @param key {string} A key for the crypto operations
* @return {Promise<any>} Returns a promise that resolves when something happens
*/
@Cordova()
decrypt(file: string, key: string): Promise<any> { return; }
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
* @name File Opener
@@ -7,7 +7,7 @@ import { Plugin, Cordova } from '@ionic-native/core';
* This plugin will open a file on your device file system with its default application.
*
* @usage
* ```
* ```typescript
* import { FileOpener } from '@ionic-native/file-opener';
*
* constructor(private fileOpener: FileOpener) { }
@@ -28,7 +28,7 @@ import { Plugin, Cordova } from '@ionic-native/core';
platforms: ['Android', 'iOS', 'Windows', 'Windows Phone 8']
})
@Injectable()
export class FileOpener {
export class FileOpener extends IonicNativePlugin {
/**
* Open an file
@@ -41,7 +41,7 @@ export class FileOpener {
successName: 'success',
errorName: 'error'
})
open(filePath: string, fileMIMEType: string): Promise<any> {return; }
open(filePath: string, fileMIMEType: string): Promise<any> { return; }
/**
* Uninstalls a package
@@ -53,7 +53,7 @@ export class FileOpener {
successName: 'success',
errorName: 'error'
})
uninstall(packageId: string): Promise<any> {return; }
uninstall(packageId: string): Promise<any> { return; }
/**
* Check if an app is already installed
@@ -65,6 +65,6 @@ export class FileOpener {
successName: 'success',
errorName: 'error'
})
appIsInstalled(packageId: string): Promise<any> {return; }
appIsInstalled(packageId: string): Promise<any> { return; }
}

View File

@@ -1,7 +1,7 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
declare var window: any;
declare const window: any;
/**
* @name File Path
@@ -10,7 +10,7 @@ declare var window: any;
* This plugin allows you to resolve the native filesystem path for Android content URIs and is based on code in the aFileChooser library.
*
* @usage
* ```
* ```typescript
* import { FilePath } from '@ionic-native/file-path';
*
* constructor(private filePath: FilePath) { }
@@ -18,8 +18,8 @@ declare var window: any;
* ...
*
* this.filePath.resolveNativePath(path)
* .then(filePath => console.log(filePath);
* .catch(err => console.log(err);
* .then(filePath => console.log(filePath))
* .catch(err => console.log(err));
*
* ```
*/
@@ -31,7 +31,7 @@ declare var window: any;
platforms: ['Android']
})
@Injectable()
export class FilePath {
export class FilePath extends IonicNativePlugin {
/**
* Resolve native path for given content URL/path.
@@ -39,6 +39,6 @@ export class FilePath {
* @returns {Promise<string>}
*/
@Cordova()
resolveNativePath(path: string): Promise<string> {return; }
resolveNativePath(path: string): Promise<string> { return; }
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
export interface FingerprintOptions {
@@ -20,7 +20,6 @@ export interface FingerprintOptions {
}
/**
* @beta
* @name Fingerprint AIO
* @description
* Use simple fingerprint authentication on Android and iOS.
@@ -30,13 +29,13 @@ export interface FingerprintOptions {
* ```typescript
* import { FingerprintAIO } from '@ionic-native/fingerprint-aio';
*
* constructor(private faio: FingerpirntAIO) { }
* constructor(private faio: FingerprintAIO) { }
*
* ...
*
* this.faio.show({
* clientId: "Fingerprint-Demo",
* clientSecret: "password", //Only necessary for Android
* clientId: 'Fingerprint-Demo',
* clientSecret: 'password', //Only necessary for Android
* disableBackup:true //Only for Android(optional)
* })
* .then((result: any) => console.log(result))
@@ -54,7 +53,7 @@ export interface FingerprintOptions {
platforms: ['Android', 'iOS']
})
@Injectable()
export class FingerprintAIO {
export class FingerprintAIO extends IonicNativePlugin {
/**
* Check if fingerprint authentication is available

View File

@@ -1,14 +1,15 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
/**
* @beta
* @name Firebase
* @description
* This plugin brings push notifications, analytics, event tracking, crash reporting and more from Google Firebase to your Cordova project! Android and iOS supported (including iOS 10).
*
* @usage
* ```
* ```typescript
* import { Firebase } from '@ionic-native/firebase';
*
* constructor(private firebase: Firebase) { }
@@ -32,7 +33,7 @@ import { Observable } from 'rxjs/Observable';
platforms: ['Android', 'iOS']
})
@Injectable()
export class Firebase {
export class Firebase extends IonicNativePlugin {
/**
* Get the device token
@@ -60,7 +61,7 @@ export class Firebase {
onNotificationOpen(): Observable<any> { return; }
/**
* Grant permission to recieve push notifications
* Grant permission to receive push notifications
* @return {Promise<any>}
*/
@Cordova({
@@ -68,13 +69,11 @@ export class Firebase {
})
grantPermission(): Promise<any> { return; }
/**
* Check permission to recieve push notifications
* @return {Promise<any>}
*/
@Cordova({
platforms: ['iOS']
})
/**
* Check permission to receive push notifications
* @return {Promise<any>}
*/
@Cordova()
hasPermission(): Promise<any> { return; }
/**
@@ -117,6 +116,14 @@ export class Firebase {
@Cordova()
logEvent(type: string, data: any): Promise<any> { return; }
/**
* Log an Error using FirebaseCrash
* @param message {string}
* @return {Promise<any>}
*/
@Cordova()
logError(message: string): Promise<any> { return; }
/**
* Set the name of the current screen in Analytics
* @param name {string} Screen name
@@ -148,7 +155,6 @@ export class Firebase {
* @return {Promise<any>}
*/
@Cordova({
platforms: ['Android'],
successIndex: 1,
errorIndex: 2
})
@@ -158,9 +164,7 @@ export class Firebase {
* Activate the Remote Config fetched config
* @return {Promise<any>}
*/
@Cordova({
platforms: ['Android']
})
@Cordova()
activateFetched(): Promise<any> { return; }
/**
@@ -170,7 +174,6 @@ export class Firebase {
* @return {Promise<any>}
*/
@Cordova({
platforms: ['Android'],
successIndex: 2,
errorIndex: 3
})

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Flashlight
@@ -11,24 +11,23 @@ import { Cordova, Plugin } from '@ionic-native/core';
* ```typescript
* import { Flashlight } from '@ionic-native/flashlight';
*
* constructor(private flashlight: FlashLight) { }
* constructor(private flashlight: Flashlight) { }
*
* ...
*
* this.flashlight.switchOn();
*
*
* ```
*/
@Plugin({
pluginName: 'Flashlight',
plugin: 'cordova-plugin-flashlight',
pluginRef: 'window.plugins.flashlight',
repo: 'https://github.com/EddyVerbruggen/Flashlight-PhoneGap-Plugin.git',
repo: 'https://github.com/EddyVerbruggen/Flashlight-PhoneGap-Plugin',
platforms: ['Android', 'iOS', 'Windows Phone 8']
})
@Injectable()
export class Flashlight {
export class Flashlight extends IonicNativePlugin {
/**
* Checks if the flashlight is available

View File

@@ -0,0 +1,237 @@
import { Plugin, CordovaInstance, checkAvailability, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
export interface FlurryAnalyticsOptions {
/** Flurry API key is required */
appKey: string;
/**
* Overrides the version of the app
*/
version?: string;
/**
* How long can the app be paused before a new session is created,
* must be less than or equal to five for Android devices
*/
continueSessionSeconds?: number;
/**
* Set id of the user
*/
userId?: string;
/**
* Set gender of the user
* Valid values are "m", "M", "f" and "F"
*/
gender?: string;
/**
* Set age of the user
*/
age?: number;
/**
* Set error for log
* Values: VERBOSE, DEBUG, INFO, WARN, ERROR
*/
logLevel?: string;
/**
* Defaults to false
*/
enableLogging?: boolean;
/**
* Should every event show up the app's log, defaults to true
*/
enableEventLogging?: boolean;
/**
* Should app crashes be recorded in flurry, defaults to false, iOS only
*/
enableCrashReporting?: boolean;
/**
* Should the session continue when the app is the background, defaults to false, iOS only
*/
enableBackgroundSessions?: boolean;
/**
* Should data be pushed to flurry when the app closes, defaults to true, iOS only
*/
reportSessionsOnClose?: boolean;
/**
* Should data be pushed to flurry when the app is paused, defaults to true, iOS only
*/
reportSessionsOnPause?: boolean;
}
export interface FlurryAnalyticsLocation {
latitude: number;
longitude: number;
/**
* Set altitude
* It is optional and use only for iOS
*/
verticalAccuracy?: number;
/**
* Set radius about 2d point
* It is optional and use only for iOS
*/
horizontalAccuracy?: number;
}
/**
* @hidden
*/
export class FlurryAnalyticsObject {
constructor(private _objectInstance: any) { }
/**
* This function set the Event
* @param eventName {string} Name of the event
* @param [params] {Object} Optional params
* @return {Promise<any>} Returns a promise that resolves when event is sent
*/
@CordovaInstance({
successIndex: 2,
errorIndex: 3
})
logEvent(eventName: string, params?: any): Promise<any> {
return;
}
/**
* Start a timed event
* @param eventName {string} Name of the event
* @param [params] {Object} Optional params
* @return {Promise<any>} Returns a promise that resolves when timed event is started tracking
*/
@CordovaInstance({
successIndex: 2,
errorIndex: 3
})
startTimedEvent(eventName: string, params?: Object): Promise<any> {
return;
}
/**
* Complete a timed event
* @param eventName {string} Name of the event
* @param [params] {Object} Optional params
* @return {Promise<any>} Returns a promise that resolves when timed event is ended tracking
*/
@CordovaInstance({
successIndex: 2,
errorIndex: 3
})
endTimedEvent(eventName: string, params?: Object): Promise<any> {
return;
}
/**
* This function log an error
* @param code
* @param message
* @return {Promise<any>}
*/
@CordovaInstance()
logError(code: any, message: any): Promise<any> {
return;
}
/**
* This function log a page view
* @return {Promise<any>}
*/
@CordovaInstance()
logPageView(): Promise<any> {
return;
}
/**
* This function set the location for the event
* (this is will only be used for very course grained statistics like city)
* @param location {FlurryAnalyticsLocation}
* @param message {string}
* @return {Promise<any>}
*/
@CordovaInstance()
setLocation(location: FlurryAnalyticsLocation, message: string): Promise<any> {
return;
}
/**
* This function start the session
* Only needed for older versions of Android
* @return {Promise<any>}
*/
@CordovaInstance()
startSession(): Promise<any> {
return;
}
/**
* This function end the session
* Only needed for older versions of Android
* @return {Promise<any>}
*/
@CordovaInstance()
endSession(): Promise<any> {
return;
}
}
/**
* @name Flurry Analytics
* @description
* This plugin connects to Flurry Analytics SDK
*
* @usage
* ```typescript
* import { FlurryAnalytics, FlurryAnalyticsObject, FlurryAnalyticsOptions } from 'ionic-native/flurry-analytics';
*
* constructor(private flurryAnalytics: FlurryAnalytics) { }
*
* ...
*
* const options: FlurryAnalyticsOptions = {
* appKey: '<your app key>', // REQUIRED
* reportSessionsOnClose: true,
* enableLogging: true
* };
*
* let fa: FlurryAnalyticsObject = this.flurryAnalytics.create(options);
*
* fa.logEvent('event name')
* .then(() => console.log('Logged an event!'))
* .catch(e => console.log('Error logging the event', e));
*
* ```
* @interfaces
* FlurryAnalyticsOptions
* FlurryAnalyticsLocation
* @classes
* FlurryAnalyticsObject
*/
@Plugin({
pluginName: 'FlurryAnalytics',
plugin: 'cordova-plugin-flurryanalytics',
pluginRef: 'FlurryAnalytics',
repo: 'https://github.com/blakgeek/cordova-plugin-flurryanalytics',
platforms: ['Android', 'iOS', 'Browser']
})
@Injectable()
export class FlurryAnalytics extends IonicNativePlugin {
/**
* Creates a new instance of FlurryAnalyticsObject
* @param options {FlurryAnalyticsOptions} options
* @return {FlurryAnalyticsObject}
*/
create(options: FlurryAnalyticsOptions): FlurryAnalyticsObject {
let instance: any;
if (checkAvailability(FlurryAnalytics.pluginRef, null, FlurryAnalytics.pluginName) === true) {
instance = new (window as any).FlurryAnalytics(options);
}
return new FlurryAnalyticsObject(instance);
}
}

View File

@@ -0,0 +1,133 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
* @name FTP
* @description
* This cordova plugin is created to use ftp (client) in web/js.
*
* @usage
* ```typescript
* import { FTP } from '@ionic-native/ftp';
*
*
* constructor(private fTP: FTP) { }
*
* ...
*
*
* this.fTP.connect('ftp_host', 'ftp_user', 'ftp_password')
* .then((res: any) => console.log('Login successful', res))
* .catch((error: any) => console.error(error));
*
* ```
*/
@Plugin({
pluginName: 'FTP',
plugin: 'cordova-plugin-ftp',
pluginRef: 'cordova.plugin.ftp',
repo: 'https://github.com/xfally/cordova-plugin-ftp',
platforms: ['Android', 'iOS']
})
@Injectable()
export class FTP extends IonicNativePlugin {
/**
* Connect to one ftp server.
*
* Just need to init the connection once. If success, you can do any ftp actions later.
* @param hostname {string} The ftp server url. Like ip without protocol prefix, e.g. "192.168.1.1".
* @param username {string} The ftp login username. If it and `password` are all blank/undefined, the default username "anonymous" is used.
* @param password {string} The ftp login password. If it and `username` are all blank/undefined, the default password "anonymous@" is used.
* @return {Promise<any>} The success callback. Notice: For iOS, if triggered, means `init` success, but NOT means the later action, e.g. `ls`... `download` will success!
*/
@Cordova()
connect(hostname: string, username: string, password: string): Promise<any> { return; }
/**
* List files (with info of `name`, `type`, `link`, `size`, `modifiedDate`) under one directory on the ftp server.
* You can get one file's name using `fileList[x].name` (`x` is the location in array).
*
* Explain key:
* - name: file name (utf-8).
* - type: file type. number `0` means regular file, `1` means directory, `2` means symbolic link, `-1` means unknown type (maybe block dev, char dev...).
* - link: if the file is a symbolic link, then this field store symbolic link information (utf-8), else it's a blank string.
* - size: file size in bytes.
* - modifiedDate: modified date of this file. date format is `yyyy-MM-dd HH:mm:ss zzz`, e.g "2015-12-01 20:45:00 GMT+8".
*
* @param path {string} The path on the ftp server. e.g. "/adf/123/".
* @return {Promise<any>} Returns a promise
*/
@Cordova()
ls(path: string): Promise<any> { return; }
/**
* Create one directory on the ftp server.
*
* @param path {string} The path on the ftp server. e.g. "/adf/123/".
* @return {Promise<any>} Returns a promise
*/
@Cordova()
mkdir(path: string): Promise<any> { return; }
/**
* Delete one directory on the ftp server.
*
* Tip: As many ftp server could not rm dir when it's not empty, so rm all files under the dir at first is recommended.
*
* @param path {string} The file (with full path) you want to delete. e.g. "/adf/123/newDir/myFile".
* @return {Promise<any>} Returns a promise
*/
@Cordova()
rmdir(path: string): Promise<any> { return; }
/**
* Delete one file on the ftp server.
*
* @param file {string} The file (with full path) you want to delete. e.g. "/adf/123/newDir/myFile".
* @return {Promise<any>} Returns a promise
*/
@Cordova()
rm(file: string): Promise<any> { return; }
/**
* Upload one local file to the ftp server.
*
* @param localFile {string} The file (with full path) you want to upload. e.g. "/local/path/to/localFile".
* @param remoteFile {string} The file (with full path) you want to located on the ftp server. e.g. "/adf/123/newDir/remoteFile".
* @return {Promise<any>} Returns a promise.
* It will be triggered many times according the file's size.
* The arg `0`, `0.1xx`, `0.2xx` ... `1` means the upload percent. When it reach `1`, means success.
*/
@Cordova()
upload(localFile: string, remoteFile: string): Promise<any> { return; }
/**
* Download one remote file on the ftp server to local path.
*
* @param localFile {string} The file (with full path) you want to upload. e.g. "/local/path/to/localFile".
* @param remoteFile {string} The file (with full path) you want to located on the ftp server. e.g. "/adf/123/newDir/remoteFile".
* @return {Promise<any>} Returns a promise.
* It will be triggered many times according the file's size.
* The arg `0`, `0.1xx`, `0.2xx` ... `1` means the upload percent. When it reach `1`, means success.
*/
@Cordova()
download(localFile: string, remoteFile: string): Promise<any> { return; }
/**
* Cancel all requests. Always success.
*
* @return {Promise<any>} Returns a promise
*/
@Cordova()
cancel(): Promise<any> { return; }
/**
* Disconnect from ftp server.
*
* @return {Promise<any>} Returns a promise
*/
@Cordova()
disconnect(): Promise<any> { return; }
}

View File

@@ -1,15 +1,15 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, CordovaFunctionOverride } from '@ionic-native/core';
import { Cordova, Plugin, CordovaFunctionOverride, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
declare var window: any;
declare const window: any;
/**
* @name Geofence
* @description Monitors circular geofences around latitude/longitude coordinates, and sends a notification to the user when the boundary of a geofence is crossed. Notifications can be sent when the user enters and/or exits a geofence.
* Geofences persist after device reboot. Geofences will be monitored even when the app is not running.
* @usage
* ```
* ```typescript
* import { Geofence } from '@ionic-native/geofence';
*
* ...
@@ -28,15 +28,15 @@ declare var window: any;
* private addGeofence() {
* //options describing geofence
* let fence = {
* id: "69ca1b88-6fbe-4e80-a4d4-ff4d3748acdb", //any unique ID
* id: '69ca1b88-6fbe-4e80-a4d4-ff4d3748acdb', //any unique ID
* latitude: 37.285951, //center of geofence radius
* longitude: -121.936650,
* radius: 100, //radius to edge of geofence
* radius: 100, //radius to edge of geofence in meters
* transitionType: 3, //see 'Transition Types' below
* notification: { //notification settings
* id: 1, //any unique ID
* title: "You crossed a fence", //notification title
* text: "You just arrived to Gliwice city center.", //notification body
* title: 'You crossed a fence', //notification title
* text: 'You just arrived to Gliwice city center.', //notification body
* openAppOnClick: true //open app when notification is tapped
* }
* }
@@ -79,11 +79,11 @@ declare var window: any;
pluginName: 'Geofence',
plugin: 'cordova-plugin-geofence',
pluginRef: 'geofence',
repo: 'https://github.com/cowbell/cordova-plugin-geofence/',
repo: 'https://github.com/cowbell/cordova-plugin-geofence',
platforms: ['Android', 'iOS', 'Windows Phone 8', 'Windows Phone']
})
@Injectable()
export class Geofence {
export class Geofence extends IonicNativePlugin {
public TransitionType = {
ENTER: 1,
@@ -148,7 +148,7 @@ export class Geofence {
return new Observable<any>((observer) => {
window && window.geofence && (window.geofence.onTransitionReceived = observer.next.bind(observer));
return () => window.geofence.onTransitionReceived = () => {};
return () => window.geofence.onTransitionReceived = () => { };
});
}
@@ -162,7 +162,7 @@ export class Geofence {
return new Observable<any>((observer) => {
window && window.geofence && (window.geofence.onNotificationClicked = observer.next.bind(observer));
return () => window.geofence.onNotificationClicked = () => {};
return () => window.geofence.onNotificationClicked = () => { };
});
}

View File

@@ -1,8 +1,8 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
declare var navigator: any;
declare const navigator: any;
export interface Coordinates {
@@ -74,7 +74,7 @@ export interface PositionError {
/**
* A message that can describe the error that occurred
*/
message: string;
message: string;
}
@@ -153,10 +153,10 @@ export interface GeolocationOptions {
plugin: 'cordova-plugin-geolocation',
pluginRef: 'navigator.geolocation',
repo: 'https://github.com/apache/cordova-plugin-geolocation',
platforms: ['Android', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone']
platforms: ['Amazon Fire OS', 'Android', 'BlackBerry 10', 'Firefox OS', 'iOS', 'Tizen', 'Windows', 'Windows Phone']
})
@Injectable()
export class Geolocation {
export class Geolocation extends IonicNativePlugin {
/**
* Get the device's current position.
@@ -174,7 +174,7 @@ export class Geolocation {
* Observable changes.
*
* ```typescript
* var subscription = Geolocation.watchPosition()
* const subscription = this.geolocation.watchPosition()
* .filter((p) => p.coords !== undefined) //Filter Out Errors
* .subscribe(position => {
* console.log(position.coords.longitude + ' ' + position.coords.latitude);

Some files were not shown because too many files have changed in this diff Show More