mirror of
https://github.com/hcengineering/platform.git
synced 2026-08-29 11:19:44 +02:00
* UBERF-11414: Use common integration kind Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Allow multiple gmail Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Merge with develop Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Refactor integration kinds Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Add integrations package Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Integrations Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Integration state and config Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Add integration events Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Refresh integration states Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Rename to integration-client Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Add filter button Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Add translations for filters Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Synced channels count Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Actions Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Add isLoading for connect Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Create connection and integration Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Use social id from hulygram Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Remove old integrations Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Gmail state Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Gmail state and disconnect all handler Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Add tests Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Formatting Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Gmail sync state Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Fix rush check Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Fix gmail tests Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Fix calendar actions and config Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Calendar state Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Access config Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Github integration state Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Fix svelte errors Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Fix formatting Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Fix typos Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Fix validate Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Fix translations Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-11414: Retry on network issues Signed-off-by: Artem Savchenko <armisav@gmail.com> --------- Signed-off-by: Artem Savchenko <armisav@gmail.com>
85 lines
3.3 KiB
TypeScript
85 lines
3.3 KiB
TypeScript
//
|
|
// Copyright © 2020, 2021 Anticrm Platform Contributors.
|
|
// Copyright © 2021 Hardcore Engineering Inc.
|
|
//
|
|
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License. You may
|
|
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
//
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
|
|
import { type Resources } from '@hcengineering/platform'
|
|
import { type Integration } from '@hcengineering/account-client'
|
|
|
|
import Chat from './components/Chat.svelte'
|
|
import Connect from './components/Connect.svelte'
|
|
import Reconnect from './components/Reconnect.svelte'
|
|
import IconTelegram from './components/icons/TelegramColor.svelte'
|
|
import TelegramMessageCreated from './components/activity/TelegramMessageCreated.svelte'
|
|
import MessagePresenter from './components/MessagePresenter.svelte'
|
|
import NotificationProviderPresenter from './components/NotificationProviderPresenter.svelte'
|
|
import TelegramIntegrationDescription from './components/TelegramIntegrationDescription.svelte'
|
|
import Configure from './components/Configure.svelte'
|
|
import StateComponent from './components/IntegrationState.svelte'
|
|
|
|
import { getCurrentEmployeeTG, getIntegrationOwnerTG, isTelegramNotificationsAvailable } from './utils'
|
|
import SharedMessages from './components/SharedMessages.svelte'
|
|
import { getIntegrationClient, disconnect, restart } from './api'
|
|
|
|
export default async (): Promise<Resources> => ({
|
|
component: {
|
|
Chat,
|
|
Connect,
|
|
Reconnect,
|
|
Configure,
|
|
IconTelegram,
|
|
SharedMessages,
|
|
MessagePresenter,
|
|
NotificationProviderPresenter,
|
|
TelegramIntegrationDescription,
|
|
StateComponent
|
|
},
|
|
activity: {
|
|
TelegramMessageCreated
|
|
},
|
|
function: {
|
|
GetCurrentEmployeeTG: getCurrentEmployeeTG,
|
|
GetIntegrationOwnerTG: getIntegrationOwnerTG,
|
|
IsTelegramNotificationsAvailable: isTelegramNotificationsAvailable
|
|
},
|
|
handler: {
|
|
DisconnectHandler: async (integration: Integration): Promise<void> => {
|
|
const integrationClient = await getIntegrationClient()
|
|
if (integration == null) {
|
|
console.warn('DisconnectHandler: No integration provided')
|
|
return
|
|
}
|
|
const connection = await integrationClient.getConnection(integration)
|
|
const phone = integration.data?.phone ?? connection?.data?.phone
|
|
const result = await integrationClient.removeIntegration(integration.socialId, integration.workspaceUuid)
|
|
if (result?.connectionRemoved === true) {
|
|
await disconnect(phone)
|
|
} else {
|
|
await restart(phone)
|
|
}
|
|
},
|
|
DisconnectAllHandler: async (integration: Integration): Promise<void> => {
|
|
const integrationClient = await getIntegrationClient()
|
|
const connection = await integrationClient.getConnection(integration)
|
|
if (connection == null) {
|
|
console.warn('DisconnectAllHandler: No connection found for integration', integration)
|
|
return
|
|
}
|
|
const phone = integration.data?.phone ?? connection?.data?.phone
|
|
await disconnect(phone)
|
|
await integrationClient.removeConnection(connection)
|
|
}
|
|
}
|
|
})
|