diff --git a/packages/core/src/time.ts b/packages/core/src/time.ts
index fadb0dc6dd..5cb82eb0d9 100644
--- a/packages/core/src/time.ts
+++ b/packages/core/src/time.ts
@@ -20,6 +20,12 @@ export function getDay (time: Timestamp): Timestamp {
return date.getTime()
}
+export function getHour (time: Timestamp): Timestamp {
+ const date: Date = new Date(time)
+ date.setMinutes(0, 0, 0)
+ return date.getTime()
+}
+
export function getDisplayTime (time: number): string {
let options: Intl.DateTimeFormatOptions = { hour: 'numeric', minute: 'numeric' }
if (!isToday(time)) {
@@ -37,6 +43,10 @@ export function isOtherDay (time1: Timestamp, time2: Timestamp): boolean {
return getDay(time1) !== getDay(time2)
}
+export function isOtherHour (time1: Timestamp, time2: Timestamp): boolean {
+ return getHour(time1) !== getHour(time2)
+}
+
function isToday (time: number): boolean {
const current = new Date()
const target = new Date(time)
diff --git a/plugins/activity-resources/src/components/Activity.svelte b/plugins/activity-resources/src/components/Activity.svelte
index c608d32bb0..3f47af0804 100644
--- a/plugins/activity-resources/src/components/Activity.svelte
+++ b/plugins/activity-resources/src/components/Activity.svelte
@@ -21,6 +21,7 @@
import ActivityExtensionComponent from './ActivityExtension.svelte'
import ActivityFilter from './ActivityFilter.svelte'
import { combineActivityMessages } from '../activityMessagesUtils'
+ import { canGroupMessages } from '../utils'
export let object: Doc
export let showCommenInput: boolean = true
@@ -95,14 +96,16 @@
{#if filteredMessages.length}
- {#each filteredMessages as message}
+ {#each filteredMessages as message, index}
+ {@const canGroup = canGroupMessages(message, filteredMessages[index - 1])}
diff --git a/plugins/activity-resources/src/components/MessageTimestamp.svelte b/plugins/activity-resources/src/components/MessageTimestamp.svelte
index 822a9f8518..8ebfcc10e6 100644
--- a/plugins/activity-resources/src/components/MessageTimestamp.svelte
+++ b/plugins/activity-resources/src/components/MessageTimestamp.svelte
@@ -19,6 +19,7 @@
import { getEmbeddedLabel } from '@hcengineering/platform'
export let date: Timestamp
+ export let shortTime = false
$: fullDate = new Date(date).toLocaleString('default', {
minute: '2-digit',
@@ -27,8 +28,14 @@
month: 'short',
year: 'numeric'
})
+
+ function getShortTime (date: Timestamp): string {
+ const options: Intl.DateTimeFormatOptions = { hour: 'numeric', minute: 'numeric' }
+
+ return new Date(date).toLocaleTimeString('default', options).split(' ')[0]
+ }
- {getDisplayTime(date)}
+ {shortTime ? getShortTime(date) : getDisplayTime(date)}
diff --git a/plugins/activity-resources/src/components/activity-message/ActivityMessagePresenter.svelte b/plugins/activity-resources/src/components/activity-message/ActivityMessagePresenter.svelte
index 759b0b011a..49f5fb865a 100644
--- a/plugins/activity-resources/src/components/activity-message/ActivityMessagePresenter.svelte
+++ b/plugins/activity-resources/src/components/activity-message/ActivityMessagePresenter.svelte
@@ -13,7 +13,7 @@
// limitations under the License.
-->
{#if !isHidden}
@@ -119,10 +130,16 @@
isActionsOpened = true
}}
>
- {#if showNotify && !embedded}
+ {#if showNotify && !embedded && !isShort}
{/if}
- {#if !embedded}
+ {#if embedded}
+
+ {:else if isShort}
+
+
+
+ {:else}
{#if $$slots.icon}
@@ -137,33 +154,33 @@
{/if}
- {:else}
-
-
+ {/if}
@@ -203,7 +220,7 @@
position: relative;
display: flex;
flex-shrink: 0;
- padding: 0.75rem 0.75rem 0.75rem 1rem;
+ padding: 0.5rem 0.75rem 0.5rem 1rem;
gap: 1rem;
//overflow: hidden;
border: 1px solid transparent;
@@ -243,6 +260,18 @@
visibility: visible;
}
+ &:hover > .time {
+ visibility: visible;
+ }
+
+ .time {
+ display: flex;
+ justify-content: end;
+ width: 2.5rem;
+ visibility: hidden;
+ margin-top: 0.125rem;
+ }
+
&.actionsOpened {
&.borderedHover {
border: 1px solid var(--global-ui-BackgroundColor);
diff --git a/plugins/activity-resources/src/components/doc-update-message/DocUpdateMessagePresenter.svelte b/plugins/activity-resources/src/components/doc-update-message/DocUpdateMessagePresenter.svelte
index a449ef867b..019171deaa 100644
--- a/plugins/activity-resources/src/components/doc-update-message/DocUpdateMessagePresenter.svelte
+++ b/plugins/activity-resources/src/components/doc-update-message/DocUpdateMessagePresenter.svelte
@@ -15,6 +15,7 @@
{#if isLoading}
@@ -589,6 +602,7 @@
{#each displayMessages as message, index (message._id)}
{@const isSelected = message._id === selectedMessageId}
+ {@const canGroup = canGroupChatMessages(message, displayMessages[index - 1])}
{#if separatorIndex === index}
@@ -609,6 +623,7 @@
withShowMore={false}
attachmentImageSize="x-large"
showLinksPreview={false}
+ type={canGroup ? 'short' : 'default'}
hideLink
/>
@@ -633,7 +648,6 @@