Skip to content

Commit 4198255

Browse files
committed
Add "created by" column and "last edited by" field
1 parent 4e5c38e commit 4198255

File tree

5 files changed

+35
-15
lines changed

5 files changed

+35
-15
lines changed

api/src/api/notes.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ router.get(
121121
'metaData.referencedMembers': 1,
122122
'metaData.access.viewableBy': 1,
123123
'metaData.access.editableBy': 1,
124+
'metaData.versionHistory': 1,
124125
};
125126

126127
const notes = await Note.find(
@@ -141,6 +142,7 @@ router.get(
141142
...note.metaData.access.viewableBy,
142143
...note.metaData.access.editableBy,
143144
...note.metaData.referencedMembers,
145+
...note.metaData.versionHistory.map((e) => e.memberID),
144146
]);
145147
const uniqueMemberIds = [...new Set(memberIds)];
146148
const formattedMembers = await memberFromId(uniqueMemberIds);
@@ -156,6 +158,14 @@ router.get(
156158
note.metaData.referencedMembers = note.metaData.referencedMembers.map(
157159
(member) => formattedMembers[member],
158160
);
161+
note.metaData.versionHistory = note.metaData.versionHistory.map(
162+
(versionChange) => ({
163+
...versionChange,
164+
member: formattedMembers[versionChange.memberID],
165+
}),
166+
);
167+
168+
note.createdBy = note.metaData.versionHistory[0].member.name;
159169
});
160170

161171
res.status(200).json({

client/src/App.jsx

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,10 @@ const App = () => {
4444
</Route>
4545
</Switch>
4646
</Route>
47-
<PrivateRoute
48-
path={Routes.NOTE_PAGE}
49-
authed={user !== null}
50-
component={<Note user={user} />}
51-
/>
52-
<PrivateRoute
53-
path={Routes.NOTES}
54-
authed={user !== null}
55-
component={<Notes />}
56-
/>
47+
<Route path={Routes.NOTE_PAGE}>
48+
{user ? <Note user={user} /> : <Login />}
49+
</Route>
50+
<Route path={Routes.NOTES}>{user ? <Notes /> : <Login />}</Route>
5751
<Route exact path={Routes.DEFAULT}>
5852
{user ? <Home user={user} /> : <Login />}
5953
</Route>

client/src/css/Note.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,7 @@ div.editor-toolbar {
6161
div.editor-toolbar > *:not(:first-child) {
6262
margin-left: 8px !important;
6363
}
64+
65+
#last-edited-text {
66+
margin-top: 8px;
67+
}

client/src/pages/Note.jsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ const Note = ({ user }: NoteProps): Node => {
115115
const [viewableBy, setViewableBy] = useState([]);
116116
const [editableBy, setEditableBy] = useState([]);
117117
const [encryptNote, setEncryptNote] = useState(true);
118+
const [lastVersion, setLastVersion] = useState(null);
118119

119120
// TODO: Implement safety guards for leaving an edited form
120121
// We can use a window.confirm() here or a semantic modal instead
@@ -151,6 +152,7 @@ const Note = ({ user }: NoteProps): Node => {
151152
editableBy: currentEditableBy,
152153
viewableBy: currentViewableBy,
153154
},
155+
versionHistory,
154156
},
155157
content,
156158
encrypt,
@@ -163,6 +165,7 @@ const Note = ({ user }: NoteProps): Node => {
163165
setViewableBy(currentViewableBy.map((m) => m.memberId));
164166
setEditableBy(currentEditableBy.map((m) => m.memberId));
165167
setEncryptNote(encrypt);
168+
setLastVersion(versionHistory[versionHistory.length - 1]);
166169

167170
// check if current user is in editor list
168171
if (
@@ -290,13 +293,10 @@ const Note = ({ user }: NoteProps): Node => {
290293
.then((res) => {
291294
setSubmitState(SUBMIT_STATE.success);
292295
setIsFetching(false);
296+
console.log(res);
297+
history.push(`/notes/${res.data.data._id}`);
293298
return res;
294299
})
295-
.then(
296-
(res) =>
297-
res?.data?.result?._id &&
298-
history.push(`/notes/${res.data.result._id}`),
299-
)
300300
.catch(() => setSubmitState(SUBMIT_STATE.error));
301301
};
302302

@@ -511,6 +511,14 @@ const Note = ({ user }: NoteProps): Node => {
511511
{submitState === SUBMIT_STATE.success && (
512512
<Message color="green" content="Successfully submitted!" />
513513
)}
514+
{lastVersion && (
515+
<div id="last-edited-text">
516+
<p>{`Last edited by ${
517+
members.find((m) => m.key == lastVersion.memberID)
518+
?.text ?? ''
519+
} on ${new Date(lastVersion.date).toDateString()}`}</p>
520+
</div>
521+
)}
514522
</Grid.Column>
515523
</Grid>
516524
</Form>

client/src/utils/tableHelpers.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,4 +174,8 @@ export const notesColumnDefs = Object.freeze([
174174
field: 'metaData.referencedMembers',
175175
valueFormatter: membersFormatter,
176176
},
177+
{
178+
headerName: 'Created By',
179+
field: 'createdBy',
180+
},
177181
]);

0 commit comments

Comments
 (0)