mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-03 20:48:07 +00:00 
			
		
		
		
	* feat: Inbox view * feat: Bind real values * chore: code cleanup * feat: add observer * fix: Inbox icon * chore: more code cleanup * chore: Replace conversation id * chore: Minor fix * chore: Hide from side bar * chore: Fix eslint * chore: Minor fix * fix: dark mode color * chore: Minor fix * feat: Add description for each notification types * chore: remove commented code * Update InboxList.vue * Update InboxView.vue * chore: fix specs * fix: specs * Update InboxView.vue --------- Co-authored-by: iamsivin <iamsivin@gmail.com> Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com>
		
			
				
	
	
		
			65 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import {
 | 
						|
  format,
 | 
						|
  isSameYear,
 | 
						|
  fromUnixTime,
 | 
						|
  formatDistanceToNow,
 | 
						|
} from 'date-fns';
 | 
						|
 | 
						|
export default {
 | 
						|
  methods: {
 | 
						|
    messageStamp(time, dateFormat = 'h:mm a') {
 | 
						|
      const unixTime = fromUnixTime(time);
 | 
						|
      return format(unixTime, dateFormat);
 | 
						|
    },
 | 
						|
    messageTimestamp(time, dateFormat = 'MMM d, yyyy') {
 | 
						|
      const messageTime = fromUnixTime(time);
 | 
						|
      const now = new Date();
 | 
						|
      const messageDate = format(messageTime, dateFormat);
 | 
						|
      if (!isSameYear(messageTime, now)) {
 | 
						|
        return format(messageTime, 'LLL d y, h:mm a');
 | 
						|
      }
 | 
						|
      return messageDate;
 | 
						|
    },
 | 
						|
    dynamicTime(time) {
 | 
						|
      const unixTime = fromUnixTime(time);
 | 
						|
      return formatDistanceToNow(unixTime, { addSuffix: true });
 | 
						|
    },
 | 
						|
    dateFormat(time, dateFormat = 'MMM d, yyyy') {
 | 
						|
      const unixTime = fromUnixTime(time);
 | 
						|
      return format(unixTime, dateFormat);
 | 
						|
    },
 | 
						|
    shortTimestamp(time, withAgo = false) {
 | 
						|
      // This function takes a time string and converts it to a short time string
 | 
						|
      // with the following format: 1m, 1h, 1d, 1mo, 1y
 | 
						|
      // The function also takes an optional boolean parameter withAgo
 | 
						|
      // which will add the word "ago" to the end of the time string
 | 
						|
      const suffix = withAgo ? ' ago' : '';
 | 
						|
      const timeMappings = {
 | 
						|
        'less than a minute ago': 'now',
 | 
						|
        'a minute ago': `1m${suffix}`,
 | 
						|
        'an hour ago': `1h${suffix}`,
 | 
						|
        'a day ago': `1d${suffix}`,
 | 
						|
        'a month ago': `1mo${suffix}`,
 | 
						|
        'a year ago': `1y${suffix}`,
 | 
						|
      };
 | 
						|
      // Check if the time string is one of the specific cases
 | 
						|
      if (timeMappings[time]) {
 | 
						|
        return timeMappings[time];
 | 
						|
      }
 | 
						|
      const convertToShortTime = time
 | 
						|
        .replace(/about|over|almost|/g, '')
 | 
						|
        .replace(' minute ago', `m${suffix}`)
 | 
						|
        .replace(' minutes ago', `m${suffix}`)
 | 
						|
        .replace(' hour ago', `h${suffix}`)
 | 
						|
        .replace(' hours ago', `h${suffix}`)
 | 
						|
        .replace(' day ago', `d${suffix}`)
 | 
						|
        .replace(' days ago', `d${suffix}`)
 | 
						|
        .replace(' month ago', `mo${suffix}`)
 | 
						|
        .replace(' months ago', `mo${suffix}`)
 | 
						|
        .replace(' year ago', `y${suffix}`)
 | 
						|
        .replace(' years ago', `y${suffix}`);
 | 
						|
      return convertToShortTime;
 | 
						|
    },
 | 
						|
  },
 | 
						|
};
 |