1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- // Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- import { EnumTicketArticleSenderName } from '#shared/graphql/types.ts'
- import type {
- TicketArticleAction,
- TicketArticleActionPlugin,
- TicketArticleType,
- } from './types.ts'
- const actionPlugin: TicketArticleActionPlugin = {
- order: 300,
- addActions(ticket, article) {
- if (
- article.sender?.name !== EnumTicketArticleSenderName.Customer ||
- article.type?.name !== 'sms'
- )
- return []
- const action: TicketArticleAction = {
- apps: ['mobile', 'desktop'],
- label: __('Reply'),
- name: 'sms',
- icon: 'reply',
- view: {
- agent: ['change'],
- },
- perform(ticket, article, { openReplyForm }) {
- const from = article.from?.raw
- const articleData = {
- articleType: 'sms',
- to: from ? [from] : [],
- inReplyTo: article.messageId,
- }
- openReplyForm(articleData)
- },
- }
- return [action]
- },
- addTypes(ticket) {
- const descriptionType = ticket.createArticleType?.name
- if (descriptionType !== 'sms') return []
- const type: TicketArticleType = {
- apps: ['mobile', 'desktop'],
- value: 'sms',
- label: __('Sms'),
- buttonLabel: __('Add sms'),
- icon: 'message',
- view: {
- agent: ['change'],
- },
- internal: false,
- contentType: 'text/plain',
- fields: {
- body: {
- required: true,
- validation: 'length:1,160',
- },
- to: {},
- },
- options: {
- recipientContact: 'phone',
- },
- editorMeta: {
- footer: {
- maxlength: 160,
- warningLength: 30,
- },
- },
- performReply(ticket) {
- const { preferences } = ticket
- return {
- to: [preferences?.sms?.originator || preferences?.sms?.From],
- }
- },
- }
- return [type]
- },
- }
- export default actionPlugin
|