mirror of
https://github.com/lingble/chatwoot.git
synced 2025-10-31 19:17:48 +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;
|
|
},
|
|
},
|
|
};
|