UNPKG

ng-navigator-share

Version:

Lightweight Angular wrapper on Web Share API to share PWA apps, Text, URL.

74 lines 8.35 kB
import { __awaiter, __decorate, __generator, __metadata } from "tslib"; import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; var NgNavigatorShareService = /** @class */ (function () { function NgNavigatorShareService() { this.webNavigator = null; this.webNavigator = window.navigator; } NgNavigatorShareService.prototype.canShare = function () { return this.webNavigator !== null && this.webNavigator.share !== undefined; }; NgNavigatorShareService.prototype.canShareFile = function (file) { return this.webNavigator !== null && this.webNavigator.share !== undefined && this.webNavigator.canShare({ files: file }); }; NgNavigatorShareService.prototype.share = function (_a) { var _this = this; var title = _a.title, text = _a.text, url = _a.url, files = _a.files; return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () { var shareObject, isShared, error_1; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!(this.webNavigator !== null && this.webNavigator.share !== undefined)) return [3 /*break*/, 5]; if (!((text === undefined || text === null) && (url === undefined || url === null))) return [3 /*break*/, 1]; console.warn("text and url both can't be empty, at least provide either text or url"); return [3 /*break*/, 4]; case 1: _a.trys.push([1, 3, , 4]); shareObject = { title: title, text: text, url: url }; if (files && files.length !== 0) { shareObject.files = files; } return [4 /*yield*/, this.webNavigator.share(shareObject)]; case 2: isShared = _a.sent(); resolve({ shared: true }); return [3 /*break*/, 4]; case 3: error_1 = _a.sent(); reject({ shared: false, error: error_1 }); return [3 /*break*/, 4]; case 4: return [3 /*break*/, 6]; case 5: reject({ shared: false, error: "This service/api is not supported in your Browser" }); _a.label = 6; case 6: return [2 /*return*/]; } }); }); }); }; NgNavigatorShareService.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgNavigatorShareService_Factory() { return new NgNavigatorShareService(); }, token: NgNavigatorShareService, providedIn: "root" }); NgNavigatorShareService = __decorate([ Injectable({ providedIn: 'root' }), __metadata("design:paramtypes", []) ], NgNavigatorShareService); return NgNavigatorShareService; }()); export { NgNavigatorShareService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctbmF2aWdhdG9yLXNoYXJlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1uYXZpZ2F0b3Itc2hhcmUvIiwic291cmNlcyI6WyJsaWIvbmctbmF2aWdhdG9yLXNoYXJlL25nLW5hdmlnYXRvci1zaGFyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQztJQUVFO1FBREEsaUJBQVksR0FBUSxJQUFJLENBQUM7UUFFdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCwwQ0FBUSxHQUFSO1FBQ0UsT0FBTyxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUM7SUFDN0UsQ0FBQztJQUVELDhDQUFZLEdBQVosVUFBYSxJQUFRO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUgsQ0FBQztJQUVELHVDQUFLLEdBQUwsVUFBTSxFQUEwRjtRQUFoRyxpQkFvQ0M7WUFwQ08sZ0JBQUssRUFBRSxjQUFJLEVBQUUsWUFBRyxFQUFFLGdCQUFLO1FBQzdCLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBTyxPQUFPLEVBQUUsTUFBTTs7Ozs7NkJBQ25DLENBQUEsSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFBLEVBQW5FLHdCQUFtRTs2QkFFbkUsQ0FBQSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQzs0QkFDckMsQ0FBQyxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQSxFQURuQyx3QkFDbUM7d0JBRW5DLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUVBQXVFLENBQUMsQ0FBQzs7Ozt3QkFHOUUsV0FBVyxHQUFnQjs0QkFDN0IsS0FBSyxPQUFBOzRCQUNMLElBQUksTUFBQTs0QkFDSixHQUFHLEtBQUE7eUJBQ04sQ0FBQzt3QkFDRixJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTs0QkFDN0IsV0FBVyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7eUJBQzdCO3dCQUNnQixxQkFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBQTs7d0JBQXJELFFBQVEsR0FBRyxTQUEwQzt3QkFDM0QsT0FBTyxDQUFDOzRCQUNOLE1BQU0sRUFBRSxJQUFJO3lCQUNiLENBQUMsQ0FBQzs7Ozt3QkFFSCxNQUFNLENBQUM7NEJBQ0wsTUFBTSxFQUFFLEtBQUs7NEJBQ2IsS0FBSyxTQUFBO3lCQUNOLENBQUMsQ0FBQzs7Ozt3QkFJUCxNQUFNLENBQUM7NEJBQ0wsTUFBTSxFQUFFLEtBQUs7NEJBQ2IsS0FBSyxFQUFFLG1EQUFtRDt5QkFDM0QsQ0FBQyxDQUFDOzs7OzthQUVOLENBQUMsQ0FBQztJQUNMLENBQUM7O0lBbERVLHVCQUF1QjtRQUhuQyxVQUFVLENBQUM7WUFDVixVQUFVLEVBQUUsTUFBTTtTQUNuQixDQUFDOztPQUNXLHVCQUF1QixDQW1EbkM7a0NBeEREO0NBd0RDLEFBbkRELElBbURDO1NBbkRZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nTmF2aWdhdG9yU2hhcmVTZXJ2aWNlIHtcclxuICB3ZWJOYXZpZ2F0b3I6IGFueSA9IG51bGw7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLndlYk5hdmlnYXRvciA9IHdpbmRvdy5uYXZpZ2F0b3I7XHJcbiAgfVxyXG5cclxuICBjYW5TaGFyZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLndlYk5hdmlnYXRvciAhPT0gbnVsbCAmJiB0aGlzLndlYk5hdmlnYXRvci5zaGFyZSAhPT0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgY2FuU2hhcmVGaWxlKGZpbGU6IFtdKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy53ZWJOYXZpZ2F0b3IgIT09IG51bGwgJiYgdGhpcy53ZWJOYXZpZ2F0b3Iuc2hhcmUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLndlYk5hdmlnYXRvci5jYW5TaGFyZSh7IGZpbGVzOiBmaWxlIH0pO1xyXG4gIH1cclxuXHJcbiAgc2hhcmUoeyB0aXRsZSwgdGV4dCwgdXJsLCBmaWxlcyB9OiB7IHRpdGxlOiBzdHJpbmcsIHRleHQ/OiBzdHJpbmcsIHVybD86IHN0cmluZywgZmlsZXM/OiBhbnlbXSB9KSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy53ZWJOYXZpZ2F0b3IgIT09IG51bGwgJiYgdGhpcy53ZWJOYXZpZ2F0b3Iuc2hhcmUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICh0ZXh0ID09PSB1bmRlZmluZWQgfHwgdGV4dCA9PT0gbnVsbCkgJiZcclxuICAgICAgICAgICh1cmwgPT09IHVuZGVmaW5lZCB8fCB1cmwgPT09IG51bGwpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oYHRleHQgYW5kIHVybCBib3RoIGNhbid0IGJlIGVtcHR5LCBhdCBsZWFzdCBwcm92aWRlIGVpdGhlciB0ZXh0IG9yIHVybGApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBzaGFyZU9iamVjdDogU2hhcmVPYmplY3QgPSB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZSxcclxuICAgICAgICAgICAgICAgIHRleHQsXHJcbiAgICAgICAgICAgICAgICB1cmxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgc2hhcmVPYmplY3QuZmlsZXMgPSBmaWxlcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBpc1NoYXJlZCA9IGF3YWl0IHRoaXMud2ViTmF2aWdhdG9yLnNoYXJlKHNoYXJlT2JqZWN0KTtcclxuICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgc2hhcmVkOiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmVqZWN0KHtcclxuICAgICAgICAgICAgICBzaGFyZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGVycm9yXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZWplY3Qoe1xyXG4gICAgICAgICAgc2hhcmVkOiBmYWxzZSxcclxuICAgICAgICAgIGVycm9yOiBgVGhpcyBzZXJ2aWNlL2FwaSBpcyBub3Qgc3VwcG9ydGVkIGluIHlvdXIgQnJvd3NlcmBcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5pbnRlcmZhY2UgU2hhcmVPYmplY3Qge1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgdGV4dDogc3RyaW5nO1xyXG4gIHVybDogc3RyaW5nO1xyXG4gIGZpbGVzPzogYW55W107XHJcbn1cclxuIl19