ng-navigator-share
Version:
Lightweight Angular wrapper on Web Share API to share PWA apps, Text, URL.
74 lines • 8.35 kB
JavaScript
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