From 596948eeb3c68c0ab16b671a11dcc1d762ce7a18 Mon Sep 17 00:00:00 2001 From: Ibrahim Hadeed Date: Thu, 9 Jun 2016 21:47:27 -0400 Subject: [PATCH] add 3D touch plugin --- src/index.ts | 3 ++ src/plugins/3dtouch.ts | 103 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 100 insertions(+), 6 deletions(-) diff --git a/src/index.ts b/src/index.ts index e0fe66e55..e75461475 100644 --- a/src/index.ts +++ b/src/index.ts @@ -59,11 +59,13 @@ import {SpinnerDialog} from './plugins/spinnerdialog'; import {Splashscreen} from './plugins/splashscreen'; import {SQLite} from './plugins/sqlite'; import {StatusBar} from './plugins/statusbar'; +import {ThreeDeeTouch} from './plugins/3dtouch'; import {Toast} from './plugins/toast'; import {TouchID} from './plugins/touchid'; import {Vibration} from './plugins/vibration'; import {WebIntent} from './plugins/webintent'; export * from './plugins/googlemaps'; +export * from './plugins/3dtouch'; export { ActionSheet, AdMob, @@ -183,6 +185,7 @@ window['IonicNative'] = { Splashscreen: Splashscreen, SQLite: SQLite, StatusBar: StatusBar, + ThreeDeeTouch: ThreeDeeTouch, Toast: Toast, TouchID: TouchID, Transfer: Transfer, diff --git a/src/plugins/3dtouch.ts b/src/plugins/3dtouch.ts index a155d39d0..6d1583a0f 100644 --- a/src/plugins/3dtouch.ts +++ b/src/plugins/3dtouch.ts @@ -1,13 +1,104 @@ import {Plugin, Cordova} from './plugin'; - +import {Observable} from 'rxjs/Observable'; /** - * @name + * @name 3DTouch * @description * @usage + * ``` + * import {ThreeDeeTouch, ThreeDeeTouchQuickAction, ThreeDeeTouchForceTouch} from 'ionic-native'; + * + * ... + * + * ThreeDeeTouch.isAvailable().then(isAvailable => console.log("3D Touch available? " + isAvailable)): + * + * ThreeDeeTouch.watchForceTouches() + * .subscribe( + * (data: ThreeDeeTouchForceTouch) => { + * console.log("Force touch %" + data.force); + * console.log("Force touch timestamp: " + data.timestamp); + * console.log("Force touch x: " + data.x); + * console.log("Force touch y: " + data.y); + * } + * ); + * + * + * let actions: Array = [ + * { + * type: 'checkin', + * title: 'Check in', + * subtitle: 'Quickly check in', + * iconType: 'Compose' + * }, + * { + * type: 'share', + * title: 'Share', + * subtitle: 'Share like you care', + * iconType: 'Share' + * }, + * { + * type: 'search', + * title: 'Search', + * iconType: 'Search' + * }, + * { + * title: 'Show favorites', + * iconTemplate: 'HeartTemplate' + * } + * ]; + * ThreeDeeTouch.configureQuickActions(actions); + * ``` */ @Plugin({ - plugin: '', - pluginRef: '', - repo: '', + plugin: 'cordova-plugin-3dtouch', + pluginRef: 'ThreeDeeTouch', + repo: 'https://github.com/EddyVerbruggen/cordova-plugin-3dtouch', platforms: ['iOS'] -}) \ No newline at end of file +}) +export class ThreeDeeTouch { + + /** + * You need an iPhone 6S or some future tech to use the features of this plugin, so you can check at runtime if the user's device is supported. + */ + @Cordova() + static isAvailable(): Promise {return; } + + /** + * You can get a notification when the user force touches the webview. The plugin defines a Force Touch when at least 75% of the maximum force is applied to the screen. Your app will receive the x and y coordinates, so you have to figure out which UI element was touched. + */ + @Cordova({ + observable: true + }) + static watchForceTouches(): Observable {return; } + + @Cordova({ + sync: true + }) + static configureQuickActions(quickActions: Array): void {} + + @Cordova({ + observable: true + }) + static onHomeIconPressed(): Observable {return; } + + @Cordova({ + sync: true + }) + static enableLinkPreview(): void {} + + @Cordova({ + sync: true + }) + static disableLinkPreview(): void {} +} +export interface ThreeDeeTouchQuickAction { + type?: string; + title: string; + subtitle?: string; + iconType?: string; +} +export interface ThreeDeeTouchForceTouch { + force: number; + timestamp: number; + x: number; + y: number; +} \ No newline at end of file