diff --git a/src/plugins/safari-view-controller.ts b/src/plugins/safari-view-controller.ts new file mode 100644 index 000000000..ac7181220 --- /dev/null +++ b/src/plugins/safari-view-controller.ts @@ -0,0 +1,101 @@ +import {Plugin, Cordova} from './plugin'; + +/** + * @name SafariViewController + * @description + * @usage + * ``` + * import {SafariViewController} from 'ionic-native'; + * + * ... + * + * SafariViewController.isAvailable() + * .then( + * (available) => { + * if(available){ + * + * SafariViewController.show({ + * utl: 'http://ionic.io', + * hidden: false, + * animated: false, + * transition: 'curl', + * enterReaderModeIfAvailable: true, + * tintColor: '#ff0000' + * }) + * .then( + * (result: any) => { + * if(result.event === 'opened') console.log("Opened"); + * else if(result.event === 'loaded') console.log("Loaded"); + * else if(result.event === 'closed') console.log("Closed"); + * }, + * (error: any) => console.error(error) + * ); + * + * } else { + * // use fallback browser, example InAppBrowser + * } + * } + * ); + * ``` + */ +@Plugin({ + plugin: 'cordova-plugin-safariviewcontroller', + pluginRef: 'SafariViewController', + platforms: ['iOS'], + repo: 'https://github.com/EddyVerbruggen/cordova-plugin-safariviewcontroller' +}) +export class SafariViewController { + + /** + * Checks if SafariViewController is available + */ + @Cordova() + static isAvailable(): Promise {return; } + + /** + * Shows Safari View Controller + * @param options + */ + @Cordova({ + callbackOrder: 'reverse' + }) + static show(options?: SafariViewControllerOptions): void {} + + /** + * Hides Safari View Controller + */ + @Cordova({ + sync: true + }) + static hide(): void {} + + /** + * Tries to connect to the Chrome's custom tabs service. you must call this method before calling any of the other methods listed below. + */ + @Cordova() + static connectToService(): Promise {return; } + + /** + * Call this method whenever there's a chance the user will open an external url. + */ + @Cordova() + static warmUp(): Promise {return; } + + /** + * For even better performance optimization, call this methods if there's more than a 50% chance the user will open a certain URL. + * @param url + */ + @Cordova() + static mayLaunchUrl(url: string): Promise {return; } +} + +export interface SafariViewControllerOptions { + url?: string; + hidden?: boolean; + toolbarColor?: string; + animated?: boolean; + showDefaultShareMenuItem?: boolean; + enterReaderModeIfAvailable?: boolean; + tintColor?: string; + transition?: string; +} \ No newline at end of file