mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-03 20:48:07 +00:00 
			
		
		
		
	Fixes https://github.com/chatwoot/chatwoot/issues/8436 Fixes https://github.com/chatwoot/chatwoot/issues/9767 Fixes https://github.com/chatwoot/chatwoot/issues/10156 Fixes https://github.com/chatwoot/chatwoot/issues/6031 Fixes https://github.com/chatwoot/chatwoot/issues/5696 Fixes https://github.com/chatwoot/chatwoot/issues/9250 Fixes https://github.com/chatwoot/chatwoot/issues/9762 --------- Co-authored-by: Pranav <pranavrajs@gmail.com> Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com>
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import { computed } from 'vue';
 | 
						|
import { useI18n } from 'vue-i18n';
 | 
						|
import { useRoute } from 'vue-router';
 | 
						|
import wootConstants from 'dashboard/constants/globals';
 | 
						|
 | 
						|
import { CMD_SNOOZE_NOTIFICATION } from 'dashboard/helper/commandbar/events';
 | 
						|
import { ICON_SNOOZE_NOTIFICATION } from 'dashboard/helper/commandbar/icons';
 | 
						|
import { emitter } from 'shared/helpers/mitt';
 | 
						|
 | 
						|
import { isAInboxViewRoute } from 'dashboard/helper/routeHelpers';
 | 
						|
 | 
						|
const SNOOZE_OPTIONS = wootConstants.SNOOZE_OPTIONS;
 | 
						|
 | 
						|
const createSnoozeHandler = option => () =>
 | 
						|
  emitter.emit(CMD_SNOOZE_NOTIFICATION, option);
 | 
						|
 | 
						|
const INBOX_SNOOZE_EVENTS = [
 | 
						|
  {
 | 
						|
    id: 'snooze_notification',
 | 
						|
    title: 'COMMAND_BAR.COMMANDS.SNOOZE_NOTIFICATION',
 | 
						|
    icon: ICON_SNOOZE_NOTIFICATION,
 | 
						|
    children: Object.values(SNOOZE_OPTIONS),
 | 
						|
  },
 | 
						|
  {
 | 
						|
    id: SNOOZE_OPTIONS.AN_HOUR_FROM_NOW,
 | 
						|
    title: 'COMMAND_BAR.COMMANDS.AN_HOUR_FROM_NOW',
 | 
						|
    parent: 'snooze_notification',
 | 
						|
    section: 'COMMAND_BAR.SECTIONS.SNOOZE_NOTIFICATION',
 | 
						|
    icon: ICON_SNOOZE_NOTIFICATION,
 | 
						|
    handler: createSnoozeHandler(SNOOZE_OPTIONS.AN_HOUR_FROM_NOW),
 | 
						|
  },
 | 
						|
  {
 | 
						|
    id: SNOOZE_OPTIONS.UNTIL_TOMORROW,
 | 
						|
    title: 'COMMAND_BAR.COMMANDS.UNTIL_TOMORROW',
 | 
						|
    section: 'COMMAND_BAR.SECTIONS.SNOOZE_NOTIFICATION',
 | 
						|
    parent: 'snooze_notification',
 | 
						|
    icon: ICON_SNOOZE_NOTIFICATION,
 | 
						|
    handler: createSnoozeHandler(SNOOZE_OPTIONS.UNTIL_TOMORROW),
 | 
						|
  },
 | 
						|
  {
 | 
						|
    id: SNOOZE_OPTIONS.UNTIL_NEXT_WEEK,
 | 
						|
    title: 'COMMAND_BAR.COMMANDS.UNTIL_NEXT_WEEK',
 | 
						|
    section: 'COMMAND_BAR.SECTIONS.SNOOZE_NOTIFICATION',
 | 
						|
    parent: 'snooze_notification',
 | 
						|
    icon: ICON_SNOOZE_NOTIFICATION,
 | 
						|
    handler: createSnoozeHandler(SNOOZE_OPTIONS.UNTIL_NEXT_WEEK),
 | 
						|
  },
 | 
						|
  {
 | 
						|
    id: SNOOZE_OPTIONS.UNTIL_NEXT_MONTH,
 | 
						|
    title: 'COMMAND_BAR.COMMANDS.UNTIL_NEXT_MONTH',
 | 
						|
    section: 'COMMAND_BAR.SECTIONS.SNOOZE_NOTIFICATION',
 | 
						|
    parent: 'snooze_notification',
 | 
						|
    icon: ICON_SNOOZE_NOTIFICATION,
 | 
						|
    handler: createSnoozeHandler(SNOOZE_OPTIONS.UNTIL_NEXT_MONTH),
 | 
						|
  },
 | 
						|
  {
 | 
						|
    id: SNOOZE_OPTIONS.UNTIL_CUSTOM_TIME,
 | 
						|
    title: 'COMMAND_BAR.COMMANDS.UNTIL_CUSTOM_TIME',
 | 
						|
    section: 'COMMAND_BAR.SECTIONS.SNOOZE_NOTIFICATION',
 | 
						|
    parent: 'snooze_notification',
 | 
						|
    icon: ICON_SNOOZE_NOTIFICATION,
 | 
						|
    handler: createSnoozeHandler(SNOOZE_OPTIONS.UNTIL_CUSTOM_TIME),
 | 
						|
  },
 | 
						|
];
 | 
						|
 | 
						|
export function useInboxHotKeys() {
 | 
						|
  const { t } = useI18n();
 | 
						|
  const route = useRoute();
 | 
						|
 | 
						|
  const prepareActions = actions => {
 | 
						|
    return actions.map(action => ({
 | 
						|
      ...action,
 | 
						|
      title: t(action.title),
 | 
						|
      section: action.section ? t(action.section) : undefined,
 | 
						|
    }));
 | 
						|
  };
 | 
						|
 | 
						|
  const inboxHotKeys = computed(() => {
 | 
						|
    if (isAInboxViewRoute(route.name)) {
 | 
						|
      return prepareActions(INBOX_SNOOZE_EVENTS);
 | 
						|
    }
 | 
						|
    return [];
 | 
						|
  });
 | 
						|
 | 
						|
  return {
 | 
						|
    inboxHotKeys,
 | 
						|
  };
 | 
						|
}
 |