Skip to content

Commit

Permalink
feat(screenshot): add plugin (#4751)
Browse files Browse the repository at this point in the history
  • Loading branch information
MaximBelov authored Apr 17, 2024
1 parent 6d3008d commit a3ba001
Showing 1 changed file with 78 additions and 0 deletions.
78 changes: 78 additions & 0 deletions src/@awesome-cordova-plugins/plugins/screenshot/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
import { Injectable } from '@angular/core';
import { AwesomeCordovaNativePlugin, Plugin, getPromise } from '@awesome-cordova-plugins/core';

declare const navigator: any;

/**
* @name Screenshot
* @description Captures a screen shot
* @usage
* ```typescript
* import { Screenshot } from '@ionic-native/screenshot/ngx';
*
* constructor(private screenshot: Screenshot) { }
*
* ...
*
* // Take a screenshot and save to file
* this.screenshot.save('jpg', 80, 'myscreenshot.jpg').then(onSuccess, onError);
*
* // Take a screenshot and get temporary file URI
* this.screenshot.URI(80).then(onSuccess, onError);
* ```
*/
@Plugin({
pluginName: 'Screenshot',
plugin: '@herdwatch-apps/cordova-plugin-screenshot',
pluginRef: 'navigator.screenshot',
repo: 'https://github.com/herdwatch-apps/cordova-plugin-screenshot',
platforms: ['Android', 'iOS'],
})
@Injectable()
export class Screenshot extends AwesomeCordovaNativePlugin {
/**
* Takes screenshot and saves the image
*
* @param format {string} Format can take the value of either 'jpg' or 'png'
* On ios, only 'jpg' format is supported
* @param quality {number} Determines the quality of the screenshot.
* Default quality is set to 100.
* @param filename {string} Name of the file as stored on the storage
* @returns {Promise<any>}
*/
save(format?: string, quality?: number, filename?: string): Promise<any> {
return getPromise<any>((resolve, reject) => {
navigator.screenshot.save(
(error: any, result: any) => {
if (error) {
reject(error);
} else {
resolve(result);
}
},
format,
quality,
filename
);
});
}

/**
* Takes screenshot and returns the image as an URI
*
* @param quality {number} Determines the quality of the screenshot.
* Default quality is set to 100.
* @returns {Promise<any>}
*/
URI(quality?: number): Promise<any> {
return getPromise<any>((resolve, reject) => {
navigator.screenshot.URI((error: any, result: any) => {
if (error) {
reject(error);
} else {
resolve(result);
}
}, quality);
});
}
}

0 comments on commit a3ba001

Please sign in to comment.