Skip to content

Commit d51f320

Browse files
authored
Merge pull request #407 from Harbour-Enterprises/nick/har-9326-show-imported-author-when-present
HAR-9326 - Handle imported author from docx imports, add it to comments composble, show it if it exists
2 parents 3180dac + 6db3ae3 commit d51f320

6 files changed

Lines changed: 22 additions & 29 deletions

File tree

packages/superdoc/src/components/CommentsLayer/CommentDialog.vue

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,6 @@ const comments = computed(() => {
8989
.sort((a, b) => a.commentId === props.comment.commentId && a.createdTime - b.createdTime);
9090
});
9191
92-
const getCommentUser = (comment) => {
93-
return {
94-
name: comment.creatorName,
95-
email: comment.creatorEmail,
96-
};
97-
};
98-
9992
const isInternalDropdownDisabled = computed(() => {
10093
if (props.comment.resolvedTime) return true;
10194
return getConfig.value.readOnly;
@@ -260,10 +253,7 @@ const usersFiltered = computed(() => {
260253
if (props.comment.isInternal === true) {
261254
return users.filter((user) => user.access?.role === 'internal');
262255
}
263-
if (props.comment.isInternal === false) {
264-
return users.filter((user) => user.access?.role === 'external');
265-
}
266-
256+
267257
return users;
268258
});
269259
@@ -299,7 +289,6 @@ onMounted(() => {
299289
<!-- Comments and their threaded (sub) comments are rendered here -->
300290
<div v-for="(comment, index) in comments" :key="index" class="conversation-item">
301291
<CommentHeader
302-
:user="getCommentUser(comment)"
303292
:config="getConfig"
304293
:timestamp="getProcessedDate(comment.createdTime)"
305294
:comment="comment"
@@ -332,7 +321,6 @@ onMounted(() => {
332321
</div>
333322
<div v-else class="comment-editing">
334323
<CommentInput
335-
:user="superdocStore.user"
336324
:users="usersFiltered"
337325
:config="getConfig"
338326
:include-header="false"
@@ -356,7 +344,6 @@ onMounted(() => {
356344
<div v-if="showInputSection && !getConfig.readOnly">
357345
<CommentInput
358346
ref="commentInput"
359-
:user="superdocStore.user"
360347
:users="usersFiltered"
361348
:config="getConfig"
362349
:comment="props.comment"

packages/superdoc/src/components/CommentsLayer/CommentHeader.vue

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,6 @@ import Avatar from '@superdoc/components/general/Avatar.vue';
1010
const emit = defineEmits(['resolve', 'reject', 'overflow-select']);
1111
const commentsStore = useCommentsStore();
1212
const props = defineProps({
13-
user: {
14-
type: Object,
15-
required: true,
16-
},
1713
timestamp: {
1814
type: Number,
1915
required: false,
@@ -107,9 +103,9 @@ const handleSelect = (value) => emit('overflow-select', value);
107103
<template>
108104
<div class="card-section comment-header">
109105
<div class="comment-header-left">
110-
<Avatar :user="props.user" class="avatar" />
106+
<Avatar :user="props.comment.getCommentUser()" class="avatar" />
111107
<div class="user-info">
112-
<div class="user-name">{{ props.user.name }}</div>
108+
<div class="user-name">{{ props.comment.getCommentUser().name }}</div>
113109
<div class="user-timestamp" v-if="props.comment.createdTime">{{ formatDate(props.comment.createdTime) }}</div>
114110
</div>
115111
</div>

packages/superdoc/src/components/CommentsLayer/CommentInput.vue

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ import CommentHeader from './CommentHeader.vue';
77
88
const emit = defineEmits(['focus']);
99
const props = defineProps({
10-
user: {
11-
type: Object,
12-
required: true,
13-
},
1410
users: {
1511
type: Array,
1612
required: false,
@@ -43,7 +39,7 @@ const handleFocusChange = (focused) => emit('focus', focused);
4339

4440
<template>
4541
<div class="input-section">
46-
<CommentHeader v-if="includeHeader" :user="user" :config="config" :comment="comment" :is-pending-input="true" />
42+
<CommentHeader v-if="includeHeader" :config="config" :comment="comment" :is-pending-input="true" />
4743

4844
<div class="comment-entry" :class="{ 'input-active': isFocused }">
4945
<SuperInput

packages/superdoc/src/components/CommentsLayer/use-comment.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export default function useComment(params) {
2929
const creatorEmail = params.creatorEmail;
3030
const creatorName = params.creatorName;
3131
const createdTime = params.createdTime || Date.now();
32+
const importedAuthor = ref(params.importedAuthor || null);
3233

3334
const commentText = ref(params.commentText || '');
3435

@@ -192,6 +193,14 @@ export default function useComment(params) {
192193
selection.selectionBounds = newCoords;
193194
};
194195

196+
const getCommentUser = () => {
197+
const user = importedAuthor.value
198+
? { name: importedAuthor.value.name || "(Imported)", email: importedAuthor.value.email }
199+
: { name: creatorName, email: creatorEmail };
200+
201+
return user;
202+
};
203+
195204
/**
196205
* Emit updates to the end client, and sync with collaboration if necessary
197206
*
@@ -224,6 +233,7 @@ export default function useComment(params) {
224233
creatorEmail,
225234
creatorName,
226235
createdTime,
236+
importedAuthor: importedAuthor.value,
227237
isInternal: isInternal.value,
228238
commentText: commentText.value,
229239
selection: selection ? selection.getValues() : null,
@@ -261,6 +271,7 @@ export default function useComment(params) {
261271
resolvedTime,
262272
resolvedByEmail,
263273
resolvedByName,
274+
importedAuthor,
264275

265276
// Actions
266277
setText,
@@ -269,5 +280,6 @@ export default function useComment(params) {
269280
setIsInternal,
270281
setActive,
271282
updatePosition,
283+
getCommentUser,
272284
});
273285
};

packages/superdoc/src/components/general/Avatar.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ const props = defineProps({
77
});
88
99
const getInitials = (name, email) => {
10-
if (!name) return;
11-
const firstLetter = name.substring(0, 1) || email.substring(0, 1) || null;
10+
if (!name && !email) return;
11+
const firstLetter = name?.substring(0, 1) || email?.substring(0, 1) || null;
1212
return firstLetter;
1313
};
1414
</script>

packages/superdoc/src/stores/comments-store.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -464,8 +464,10 @@ export const useCommentsStore = defineStore('comments', () => {
464464
commentId: comment.id,
465465
isInternal: false,
466466
parentCommentId: comment.parentCommentId,
467-
creatorEmail: comment.creatorEmail,
468-
creatorName: importedName,
467+
importedAuthor: {
468+
name: importedName,
469+
email: comment.creatorEmail,
470+
},
469471
commentText: getHTmlFromComment(comment.textJson),
470472
resolvedTime: comment.isDone ? Date.now() : null,
471473
resolvedByEmail: comment.isDone ? comment.creatorEmail : null,

0 commit comments

Comments
 (0)