Files
awesome-cordova-plugins/src/@awesome-cordova-plugins/plugins/three-dee-touch/index.ts
T
Maxim Belov 8fc3465ed5 refactor(three-dee-touch): Replace onHomeIconPressed with registerQuickActionListener (#4829)
* refactor(three-dee-touch): Replace onHomeIconPressed with registerQuickActionListener

* fix: install option

* remove install
2024-10-13 16:44:04 +02:00

196 lines
5.3 KiB
TypeScript

import { Injectable } from '@angular/core';
import { Cordova, AwesomeCordovaNativePlugin, Plugin } from '@awesome-cordova-plugins/core';
import { Observable } from 'rxjs';
export interface ThreeDeeTouchQuickAction {
/**
* Type that can be used in the registerQuickActionListener callback
*/
type?: string;
/**
* Title
*/
title: string;
/**
* Subtitle
*/
subtitle?: string;
/**
* Icon type. Case insensitive
*/
iconType?: string;
/**
* Icon template
*/
iconTemplate?: string;
}
export interface ThreeDeeTouchForceTouch {
/**
* Touch force
*/
force: number;
/**
* Timestamp of action
*/
timestamp: number;
/**
* X coordinate of action
*/
x: number;
/**
* Y coordinate of action
*/
y: number;
}
/**
* @name 3D Touch
* @description
* The 3D Touch plugin adds 3D Touch capabilities to your Cordova app.
*
* Requires Cordova plugin: `cordova-plugin-3dtouch`. For more info, please see the [3D Touch plugin docs](https://github.com/EddyVerbruggen/cordova-plugin-3dtouch).
* @usage
* Please do refer to the original plugin's repo for detailed usage. The usage example here might not be sufficient.
* ```typescript
* import { ThreeDeeTouch, ThreeDeeTouchQuickAction, ThreeDeeTouchForceTouch } from '@awesome-cordova-plugins/three-dee-touch/ngx';
*
* constructor(private threeDeeTouch: ThreeDeeTouch) { }
*
* ...
*
* this.threeDeeTouch.isAvailable().then(isAvailable => console.log('3D Touch available? ' + isAvailable));
*
* this.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: ThreeDeeTouchQuickAction[] = [
* {
* 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'
* }
* ];
*
* this.threeDeeTouch.configureQuickActions(actions);
*
* this.threeDeeTouch.registerQuickActionListener().subscribe(
* (payload) => {
* // returns an object that is the button you presed
* console.log('Pressed the ${payload.title} button')
* console.log(payload.type)
*
* }
* )
* ```
* @interfaces
* ThreeDeeTouchQuickAction
* ThreeDeeTouchForceTouch
*/
@Plugin({
pluginName: 'ThreeDeeTouch',
plugin: '@herdwatch/cordova-plugin-3dtouch',
pluginRef: 'ThreeDeeTouch',
repo: 'https://github.com/herdwatch-apps/cordova-plugin-3dtouch',
platforms: ['iOS'],
})
@Injectable()
export class ThreeDeeTouch extends AwesomeCordovaNativePlugin {
/**
* 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.
*
* @returns {Promise<boolean>} returns a promise that resolves with a boolean that indicates whether the plugin is available or not
*/
@Cordova()
isAvailable(): Promise<boolean> {
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.
*
* @returns {Observable<ThreeDeeTouchForceTouch>} Returns an observable that sends a `ThreeDeeTouchForceTouch` object
*/
@Cordova({
observable: true,
})
watchForceTouches(): Observable<ThreeDeeTouchForceTouch> {
return;
}
/**
* setup the 3D-touch actions, takes an array of objects with the following
*
* @param {string} type (optional) A type that can be used `onHomeIconPressed` callback
* @param {string} title Title for your action
* @param {string} subtitle (optional) A short description for your action
* @param {string} iconType (optional) Choose between Prohibit, Contact, Home, MarkLocation, Favorite, Love, Cloud, Invitation, Confirmation, Mail, Message, Date, Time, CapturePhoto, CaptureVideo, Task, TaskCompleted, Alarm, Bookmark, Shuffle, Audio, Update
* @param {string} iconTemplate (optional) Can be used to provide your own icon
* @param quickActions
*/
@Cordova({
sync: true,
})
configureQuickActions(quickActions: ThreeDeeTouchQuickAction[]): void {}
/**
* When a home icon is pressed, your app launches and this JS callback is invoked.
*
* @returns {Observable<any>} returns an observable that notifies you when he user presses on the home screen icon
*/
@Cordova({
observable: true,
})
registerQuickActionListener(): Observable<ThreeDeeTouchQuickAction> {
return;
}
/**
* Enable Link Preview.
* UIWebView and WKWebView (the webviews powering Cordova apps) don't allow the fancy new link preview feature of iOS9.
*/
@Cordova({
sync: true,
})
enableLinkPreview(): void {}
/**
* Disabled the link preview feature, if enabled.
*/
@Cordova({
sync: true,
})
disableLinkPreview(): void {}
}