ng-yunzai-mobile
Version:
1. 适配yunzai_uni_app_x
162 lines • 14.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: devices/device.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* @Author: cuihaonan
* @Email: devcui@outlook.com
* @Date: 2021-04-07 13:55:19
* @LastEditTime: 2021-04-07 14:08:24
* @LastEditors: cuihaonan
* @Description: Basic description
* @FilePath: /angular-mobile-npm-package/projects/ng-yunzai-mobile/devices/device.service.ts
* @LICENSE: NONE
*/
import { Inject, Injectable, Injector } from "@angular/core";
import { Android } from "./android";
import { IOS } from "./ios";
import { WechatMp } from "./wechat.mp";
import { WechatMicro } from "./wechat.micro";
import { Browser } from "./browser";
import { Yiban } from "./yiban";
import { YunzaiIm } from "./yunzai.im";
import { Dingtalk } from "./dingtalk";
import { BASE_CLIENT } from "../client";
import { YunzaiOaUniAppX } from "./yunzai.oa-uni-app-x";
import * as i0 from "@angular/core";
import * as i1 from "../client/base.client";
/** @enum {string} */
const DeviceType = {
// 浏览器
BROWSER: "BROWSER",
// 苹果
IOS: "IOS",
// 安卓
ANDROID: "ANDROID",
// 公众号
WECHAT_MP: "WECHAT_MP",
// 小程序
WECHAT_MICRO: "WECHAT_MICRO",
// YIBAN
YIBAN: "YIBAN",
// YUNZAI_IM
YUNZAI_IM: "YUNZAI_IM",
// YUNZAI_OA_UNI_APP_X
YUNZAI_OA_UNI_APP_X: "YUNZAI_OA_UNI_APP_X",
// 钉钉
DINGTALK: "DINGTALK",
};
export { DeviceType };
export class DeviceService {
// tslint:disable-next-line: no-use-before-declare
/**
* @param {?} inject
* @param {?} baseclient
*/
constructor(inject, baseclient) {
this.inject = inject;
this.baseclient = baseclient;
if (this.baseclient.alwaysBrowser) {
this.native = this.inject.get(Browser);
return;
}
switch (this.getType()) {
case DeviceType.YIBAN:
this.native = this.inject.get(Yiban);
break;
case DeviceType.ANDROID:
this.native = this.inject.get(Android);
break;
case DeviceType.IOS:
this.native = this.inject.get(IOS);
break;
case DeviceType.YUNZAI_IM:
this.native = this.inject.get(YunzaiIm);
break;
case DeviceType.YUNZAI_OA_UNI_APP_X:
this.native = this.inject.get(YunzaiOaUniAppX);
break;
case DeviceType.DINGTALK:
this.native = this.inject.get(Dingtalk);
break;
case DeviceType.WECHAT_MP:
this.native = this.inject.get(WechatMp);
break;
case DeviceType.WECHAT_MICRO:
this.native = this.inject.get(WechatMicro);
break;
default:
this.native = this.inject.get(Browser);
break;
}
}
/**
* @return {?}
*/
ngOnInit() {
}
/**
* 获取设备类型
* @return {?}
*/
getType() {
/** @type {?} */
const agent = window.navigator.userAgent.toLowerCase();
if (/yiban/.test(agent)) {
return DeviceType.YIBAN;
}
if (/miniprogram/.test(agent)) {
return DeviceType.WECHAT_MICRO;
}
if (/yunzai_im/.test(agent)) {
return DeviceType.YUNZAI_IM;
}
if (/uni-app-x/.test(agent)) {
return DeviceType.YUNZAI_OA_UNI_APP_X;
}
if (/dingtalk/.test(agent)) {
return DeviceType.DINGTALK;
}
if (/iphone|ipod|ipad/.test(agent) &&
/mobile/.test(agent) &&
/yunzai/.test(agent)) {
return DeviceType.IOS;
}
if (/android/.test(agent) &&
/mobile/.test(agent) &&
/yunzai/.test(agent)) {
return DeviceType.ANDROID;
}
if (/micromessenger/.test(agent)) {
return DeviceType.WECHAT_MP;
}
return DeviceType.BROWSER;
}
}
DeviceService.decorators = [
{ type: Injectable, args: [{
providedIn: "root",
},] }
];
/** @nocollapse */
DeviceService.ctorParameters = () => [
{ type: Injector },
{ type: undefined, decorators: [{ type: Inject, args: [BASE_CLIENT,] }] }
];
/** @nocollapse */ DeviceService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function DeviceService_Factory() { return new DeviceService(i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.BASE_CLIENT)); }, token: DeviceService, providedIn: "root" });
if (false) {
/** @type {?} */
DeviceService.prototype.native;
/**
* @type {?}
* @private
*/
DeviceService.prototype.inject;
/**
* @type {?}
* @private
*/
DeviceService.prototype.baseclient;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy15dW56YWktbW9iaWxlLyIsInNvdXJjZXMiOlsiZGV2aWNlcy9kZXZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFVQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFDLFdBQVcsRUFBYSxNQUFNLFdBQVcsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFLdEQsTUFBWSxVQUFVO0lBQ3BCLE1BQU07SUFDTixPQUFPLFdBQVk7SUFDbkIsS0FBSztJQUNMLEdBQUcsT0FBUTtJQUNYLEtBQUs7SUFDTCxPQUFPLFdBQVk7SUFDbkIsTUFBTTtJQUNOLFNBQVMsYUFBYztJQUN2QixNQUFNO0lBQ04sWUFBWSxnQkFBaUI7SUFDN0IsUUFBUTtJQUNSLEtBQUssU0FBVTtJQUNmLFlBQVk7SUFDWixTQUFTLGFBQWM7SUFDdkIsc0JBQXNCO0lBQ3RCLG1CQUFtQix1QkFBd0I7SUFDM0MsS0FBSztJQUNMLFFBQVEsWUFBYTtFQUN0Qjs7QUFP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QUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNwQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUNwQjtZQUNBLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQztTQUN2QjtRQUNELElBQ0UsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDckIsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFDcEI7WUFDQSxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUM7U0FDM0I7UUFDRCxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoQyxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUM7U0FDN0I7UUFDRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUM7SUFDNUIsQ0FBQzs7O1lBeEZGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OztZQXpDMkIsUUFBUTs0Q0FrRHJCLE1BQU0sU0FBQyxXQUFXOzs7OztJQVAvQiwrQkFBbUI7Ozs7O0lBTVAsK0JBQXdCOzs7OztJQUN4QixtQ0FBbUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBAQXV0aG9yOiBjdWloYW9uYW5cclxuICogQEVtYWlsOiBkZXZjdWlAb3V0bG9vay5jb21cclxuICogQERhdGU6IDIwMjEtMDQtMDcgMTM6NTU6MTlcclxuICogQExhc3RFZGl0VGltZTogMjAyMS0wNC0wNyAxNDowODoyNFxyXG4gKiBATGFzdEVkaXRvcnM6IGN1aWhhb25hblxyXG4gKiBARGVzY3JpcHRpb246IEJhc2ljIGRlc2NyaXB0aW9uXHJcbiAqIEBGaWxlUGF0aDogL2FuZ3VsYXItbW9iaWxlLW5wbS1wYWNrYWdlL3Byb2plY3RzL25nLXl1bnphaS1tb2JpbGUvZGV2aWNlcy9kZXZpY2Uuc2VydmljZS50c1xyXG4gKiBATElDRU5TRTogTk9ORVxyXG4gKi9cclxuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBPbkluaXR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QmFzZURldmljZX0gZnJvbSBcIi4vYmFzZS5kZXZpY2VcIjtcclxuaW1wb3J0IHtBbmRyb2lkfSBmcm9tIFwiLi9hbmRyb2lkXCI7XHJcbmltcG9ydCB7SU9TfSBmcm9tIFwiLi9pb3NcIjtcclxuaW1wb3J0IHtXZWNoYXRNcH0gZnJvbSBcIi4vd2VjaGF0Lm1wXCI7XHJcbmltcG9ydCB7V2VjaGF0TWljcm99IGZyb20gXCIuL3dlY2hhdC5taWNyb1wiO1xyXG5pbXBvcnQge0Jyb3dzZXJ9IGZyb20gXCIuL2Jyb3dzZXJcIjtcclxuaW1wb3J0IHtZaWJhbn0gZnJvbSBcIi4veWliYW5cIjtcclxuaW1wb3J0IHtZdW56YWlJbX0gZnJvbSBcIi4veXVuemFpLmltXCI7XHJcbmltcG9ydCB7RGluZ3RhbGt9IGZyb20gXCIuL2Rpbmd0YWxrXCI7XHJcbmltcG9ydCB7QkFTRV9DTElFTlQsIEJhc2VDbGllbnR9IGZyb20gXCIuLi9jbGllbnRcIjtcclxuaW1wb3J0IHtZdW56YWlPYVVuaUFwcFh9IGZyb20gXCIuL3l1bnphaS5vYS11bmktYXBwLXhcIjtcclxuXHJcbi8qKlxyXG4gKiDorr7lpIfnsbvlnotcclxuICovXHJcbmV4cG9ydCBlbnVtIERldmljZVR5cGUge1xyXG4gIC8vIOa1j+iniOWZqFxyXG4gIEJST1dTRVIgPSBcIkJST1dTRVJcIixcclxuICAvLyDoi7nmnpxcclxuICBJT1MgPSBcIklPU1wiLFxyXG4gIC8vIOWuieWNk1xyXG4gIEFORFJPSUQgPSBcIkFORFJPSURcIixcclxuICAvLyDlhazkvJflj7dcclxuICBXRUNIQVRfTVAgPSBcIldFQ0hBVF9NUFwiLFxyXG4gIC8vIOWwj+eoi+W6j1xyXG4gIFdFQ0hBVF9NSUNSTyA9IFwiV0VDSEFUX01JQ1JPXCIsXHJcbiAgLy8gWUlCQU5cclxuICBZSUJBTiA9IFwiWUlCQU5cIixcclxuICAvLyBZVU5aQUlfSU1cclxuICBZVU5aQUlfSU0gPSBcIllVTlpBSV9JTVwiLFxyXG4gIC8vIFlVTlpBSV9PQV9VTklfQVBQX1hcclxuICBZVU5aQUlfT0FfVU5JX0FQUF9YID0gXCJZVU5aQUlfT0FfVU5JX0FQUF9YXCIsXHJcbiAgLy8g6ZKJ6ZKJXHJcbiAgRElOR1RBTEsgPSBcIkRJTkdUQUxLXCIsXHJcbn1cclxuXHJcbmRlY2xhcmUgbGV0IHd4OiBhbnk7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXZpY2VTZXJ2aWNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBuYXRpdmU6IEJhc2VEZXZpY2U7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby11c2UtYmVmb3JlLWRlY2xhcmVcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdDogSW5qZWN0b3IsXHJcbiAgICAgICAgICAgICAgQEluamVjdChCQVNFX0NMSUVOVCkgcHJpdmF0ZSBiYXNlY2xpZW50OiBCYXNlQ2xpZW50XHJcbiAgKSB7XHJcblxyXG4gICAgaWYgKHRoaXMuYmFzZWNsaWVudC5hbHdheXNCcm93c2VyKSB7XHJcbiAgICAgIHRoaXMubmF0aXZlID0gdGhpcy5pbmplY3QuZ2V0KEJyb3dzZXIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmdldFR5cGUoKSkge1xyXG4gICAgICBjYXNlIERldmljZVR5cGUuWUlCQU46XHJcbiAgICAgICAgdGhpcy5uYXRpdmUgPSB0aGlzLmluamVjdC5nZXQoWWliYW4pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIERldmljZVR5cGUuQU5EUk9JRDpcclxuICAgICAgICB0aGlzLm5hdGl2ZSA9IHRoaXMuaW5qZWN0LmdldChBbmRyb2lkKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBEZXZpY2VUeXBlLklPUzpcclxuICAgICAgICB0aGlzLm5hdGl2ZSA9IHRoaXMuaW5qZWN0LmdldChJT1MpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIERldmljZVR5cGUuWVVOWkFJX0lNOlxyXG4gICAgICAgIHRoaXMubmF0aXZlID0gdGhpcy5pbmplY3QuZ2V0KFl1bnphaUltKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBEZXZpY2VUeXBlLllVTlpBSV9PQV9VTklfQVBQX1g6XHJcbiAgICAgICAgdGhpcy5uYXRpdmUgPSB0aGlzLmluamVjdC5nZXQoWXVuemFpT2FVbmlBcHBYKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBEZXZpY2VUeXBlLkRJTkdUQUxLOlxyXG4gICAgICAgIHRoaXMubmF0aXZlID0gdGhpcy5pbmplY3QuZ2V0KERpbmd0YWxrKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBEZXZpY2VUeXBlLldFQ0hBVF9NUDpcclxuICAgICAgICB0aGlzLm5hdGl2ZSA9IHRoaXMuaW5qZWN0LmdldChXZWNoYXRNcCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRGV2aWNlVHlwZS5XRUNIQVRfTUlDUk86XHJcbiAgICAgICAgdGhpcy5uYXRpdmUgPSB0aGlzLmluamVjdC5nZXQoV2VjaGF0TWljcm8pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMubmF0aXZlID0gdGhpcy5pbmplY3QuZ2V0KEJyb3dzZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W6K6+5aSH57G75Z6LXHJcbiAgICovXHJcbiAgZ2V0VHlwZSgpOiBEZXZpY2VUeXBlIHtcclxuICAgIGNvbnN0IGFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcclxuICAgIGlmICgveWliYW4vLnRlc3QoYWdlbnQpKSB7XHJcbiAgICAgIHJldHVybiBEZXZpY2VUeXBlLllJQkFOO1xyXG4gICAgfVxyXG4gICAgaWYgKC9taW5pcHJvZ3JhbS8udGVzdChhZ2VudCkpIHtcclxuICAgICAgcmV0dXJuIERldmljZVR5cGUuV0VDSEFUX01JQ1JPO1xyXG4gICAgfVxyXG4gICAgaWYgKC95dW56YWlfaW0vLnRlc3QoYWdlbnQpKSB7XHJcbiAgICAgIHJldHVybiBEZXZpY2VUeXBlLllVTlpBSV9JTTtcclxuICAgIH1cclxuICAgIGlmICgvdW5pLWFwcC14Ly50ZXN0KGFnZW50KSkge1xyXG4gICAgICByZXR1cm4gRGV2aWNlVHlwZS5ZVU5aQUlfT0FfVU5JX0FQUF9YO1xyXG4gICAgfVxyXG4gICAgaWYgKC9kaW5ndGFsay8udGVzdChhZ2VudCkpIHtcclxuICAgICAgcmV0dXJuIERldmljZVR5cGUuRElOR1RBTEs7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIC9pcGhvbmV8aXBvZHxpcGFkLy50ZXN0KGFnZW50KSAmJlxyXG4gICAgICAvbW9iaWxlLy50ZXN0KGFnZW50KSAmJlxyXG4gICAgICAveXVuemFpLy50ZXN0KGFnZW50KVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBEZXZpY2VUeXBlLklPUztcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgL2FuZHJvaWQvLnRlc3QoYWdlbnQpICYmXHJcbiAgICAgIC9tb2JpbGUvLnRlc3QoYWdlbnQpICYmXHJcbiAgICAgIC95dW56YWkvLnRlc3QoYWdlbnQpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIERldmljZVR5cGUuQU5EUk9JRDtcclxuICAgIH1cclxuICAgIGlmICgvbWljcm9tZXNzZW5nZXIvLnRlc3QoYWdlbnQpKSB7XHJcbiAgICAgIHJldHVybiBEZXZpY2VUeXBlLldFQ0hBVF9NUDtcclxuICAgIH1cclxuICAgIHJldHVybiBEZXZpY2VUeXBlLkJST1dTRVI7XHJcbiAgfVxyXG59XHJcbiJdfQ==