From 03bbdff27e9a96c26a9f792773068473ab101501 Mon Sep 17 00:00:00 2001 From: Andrey Neyman Date: Wed, 30 Oct 2024 13:38:21 +0700 Subject: [PATCH] Fixes --- package.json | 2 +- .../components/modules/Console/Console.vue | 1 + src/app/etc/methods.js | 1 + src/lib/AuthProvider/TokenProvider.js | 29 ++++++++++++++++ src/lib/AuthProvider/WebhookProvider.js | 34 ++++++++++++++++++- src/lib/types.d.ts | 25 ++++++++++++++ src/login/App.vue | 6 ++-- 7 files changed, 93 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3ebe8bb..ba5cf6f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bx24dev", - "version": "0.4.0", + "version": "0.4.1", "description": "Bitrix24 Dev extension", "author": "Andrey Neyman ", "engines": { diff --git a/src/app/components/modules/Console/Console.vue b/src/app/components/modules/Console/Console.vue index ac540d1..6529d5b 100644 --- a/src/app/components/modules/Console/Console.vue +++ b/src/app/components/modules/Console/Console.vue @@ -33,6 +33,7 @@ :select2Options="{ //tags: false, //insertTag: expertMode ? addCustomMethod : undefined, + width: '100%' }" :optionTemplate="select2Template" v-model="chosenMethod" diff --git a/src/app/etc/methods.js b/src/app/etc/methods.js index fb94960..29a6992 100644 --- a/src/app/etc/methods.js +++ b/src/app/etc/methods.js @@ -165,6 +165,7 @@ const methods = { 'crm.documentgenerator.template.getfields', 'crm.documentgenerator.template.list', 'crm.documentgenerator.template.update', + 'crm.duplicate.findbycomm', 'crm.externalchannel.activity.company', 'crm.externalchannel.activity.contact', 'crm.externalchannel.company', diff --git a/src/lib/AuthProvider/TokenProvider.js b/src/lib/AuthProvider/TokenProvider.js index f86f514..1683a7f 100644 --- a/src/lib/AuthProvider/TokenProvider.js +++ b/src/lib/AuthProvider/TokenProvider.js @@ -4,6 +4,23 @@ export default class TokenProvider { this.token = token; } + /** + * @param {TokenAuthProviderData} serializedData + * @returns {TokenProvider} + */ + static hydrate({ tabId, frameId, instanceId, instance, messageListener, serializedData }) { + const provider = new this.prototype.constructor({ + domain: serializedData.auth.domain, + token: serializedData.auth.access_token, + }); + + provider.appName = serializedData.appName; + provider.type = serializedData.type; + provider.auth = serializedData.auth; + + return provider; + } + obtain() { this.appName = 'Token'; this.appUrl = ''; @@ -16,4 +33,16 @@ export default class TokenProvider { return this.auth; } + + /** + * @returns {TokenAuthProviderData} + */ + serialize() { + return { + appName: this.appName, + appUrl: this.appUrl, + type: this.type, + auth: this.auth, + }; + } } \ No newline at end of file diff --git a/src/lib/AuthProvider/WebhookProvider.js b/src/lib/AuthProvider/WebhookProvider.js index ddd12fc..5b486c3 100644 --- a/src/lib/AuthProvider/WebhookProvider.js +++ b/src/lib/AuthProvider/WebhookProvider.js @@ -15,9 +15,28 @@ export default class WebhookProvider { }; } + /** + * @param {WebhookAuthProviderData} serializedData + * @returns {WebhookProvider} + */ + static hydrate({ tabId, frameId, instanceId, instance, messageListener, serializedData }) { + const provider = new this.prototype.constructor({ + url: serializedData.credentials.url, + }); + + provider.appName = serializedData.appName; + provider.domain = serializedData.domain; + provider.type = serializedData.type; + provider.authData = serializedData.authData; + provider.credentials = serializedData.credentials; + + return provider; + } + obtain() { - let result = /^.*:\/\/([^/]+)\/rest\/([0-9]+)\/([^/]+)\/?$/.exec(this.credentials.url); + let result = /^.*:\/\/([^\/]+)\/rest\/([0-9]+)\/([^\/]+)(?:\/?|\/.+)?$$/.exec(this.credentials.url); + // Seems to be inconsistent with others. Use credentials? this.authData = { url: result[0], domain: result[1], @@ -44,4 +63,17 @@ export default class WebhookProvider { getCredentials() { return { ...this.credentials }; } + + /** + * @returns {WebhookAuthProviderData} + */ + serialize() { + return { + appName: this.appName, + domain: this.domain, + type: this.type, + authData: this.authData, + credentials: this.credentials, + }; + } } \ No newline at end of file diff --git a/src/lib/types.d.ts b/src/lib/types.d.ts index 3ef2f5d..c2c886f 100644 --- a/src/lib/types.d.ts +++ b/src/lib/types.d.ts @@ -23,6 +23,31 @@ interface SessionAppProviderData extends BasicTokenProviderData { interface FullOAuthProviderData extends BasicTokenProviderData { } +interface WebhookAuthProviderData { + appName: string, + domain: string, + type: string, + authData: { + url: string, + domain: string, + userId: string, + key: string, + }, + credentials: { + url: string, + }, +} + +interface TokenAuthProviderData { + appName: string, + appUrl: string, + type: string, + auth: { + domain: string, + access_token: string, + }, +} + interface B24ApplicationAuthorization { accessToken: string, domain: string, diff --git a/src/login/App.vue b/src/login/App.vue index b6aa401..0528eb9 100644 --- a/src/login/App.vue +++ b/src/login/App.vue @@ -9,7 +9,7 @@
- +
@@ -23,13 +23,13 @@
-
+
- +