Skip to content

Commit a5b43a8

Browse files
authored
chore: [v2] code cleanup (#432)
1 parent a54a33b commit a5b43a8

File tree

70 files changed

+487
-797
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+487
-797
lines changed

docs/layouts/base.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
/* eslint-disable import/order */
2+
13
import {Head} from '@blinkk/root';
24
import {ComponentChildren} from 'preact';
3-
45
import {GlobalFooter} from '@/templates/global-footer/global-footer.js';
56
import {GlobalHeader} from '@/templates/global-header/global-header.js';
67
import '@/styles/global.scss';

docs/root-cms.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,4 +350,4 @@ export interface TemplatePoweredByFields {
350350
}[];
351351
/** Body copy */
352352
body?: RootCMSRichText;
353-
}
353+
}

packages/eslint-config-root/index.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,26 @@ module.exports = {
5757
'parent',
5858
'sibling',
5959
'index',
60+
'unknown',
6061
],
6162
pathGroups: [
6263
{
6364
pattern: '@/**',
6465
group: 'internal',
6566
},
67+
{
68+
pattern: '**/*.{css,scss}',
69+
group: 'unknown',
70+
},
71+
{
72+
pattern: '*.{css,scss}',
73+
group: 'unknown',
74+
patternOptions: {matchBase: true},
75+
position: 'after',
76+
},
6677
],
6778
pathGroupsExcludedImportTypes: ['builtin'],
79+
warnOnUnassignedImports: true,
6880
'newlines-between': 'ignore',
6981
alphabetize: {
7082
order: 'asc',

packages/root-cms/ui/components/ActionLogs/ActionLogs.tsx

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import {Button, Loader, Table, Tooltip} from '@mantine/core';
22
import {Timestamp} from 'firebase/firestore';
33
import {useEffect, useState} from 'preact/hooks';
4-
import {Action, listActions} from '../../utils/actions.js';
4+
import {Action, listActions} from '@/db/actions.js';
5+
import {getSpreadsheetUrl} from '@/utils/gsheets.js';
6+
import {stringifyObj} from '@/utils/objects.js';
57
import './ActionsLogs.css';
6-
import {getSpreadsheetUrl} from '../../utils/gsheets.js';
78

89
export interface ActionLogsProps {
910
className?: string;
@@ -145,29 +146,3 @@ function formatDate(timestamp: Timestamp) {
145146
timeStyle: 'medium',
146147
});
147148
}
148-
149-
/** A pretty printer for JavaScript objects. */
150-
function stringifyObj(obj: any) {
151-
function format(obj: any): string {
152-
if (obj === null) {
153-
return 'null';
154-
}
155-
if (typeof obj === 'undefined') {
156-
return 'undefined';
157-
}
158-
if (typeof obj === 'string') {
159-
return `"${obj.replaceAll('"', '\\"')}"`;
160-
}
161-
if (typeof obj !== 'object') {
162-
return String(obj);
163-
}
164-
if (Array.isArray(obj)) {
165-
return `[${obj.map(format).join(', ')}]`;
166-
}
167-
const entries: string[] = Object.entries(obj).map(([key, value]) => {
168-
return `${key}: ${format(value)}`;
169-
});
170-
return `{${entries.join(', ')}}`;
171-
}
172-
return format(obj);
173-
}

packages/root-cms/ui/components/AssetUploader/AssetUploader.tsx

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import {TextInput} from '@mantine/core';
22
import {showNotification} from '@mantine/notifications';
33
import {IconFileUpload} from '@tabler/icons-preact';
44
import {useEffect, useRef, useState} from 'preact/hooks';
5-
import {Text} from '../../components/Text/Text.js';
6-
import {joinClassNames} from '../../utils/classes.js';
7-
import {UploadFileOptions, uploadFileToGCS} from '../../utils/gcs.js';
5+
import {Text} from '@/components/Text/Text.js';
6+
import {joinClassNames} from '@/utils/classes.js';
7+
import {UploadFileOptions, uploadFileToGCS} from '@/utils/gcs.js';
88
import './AssetUploader.css';
99

1010
export const IMAGE_MIMETYPES = [
@@ -62,30 +62,29 @@ export function AssetUploader(props: AssetUploaderProps) {
6262
}
6363
}
6464

65-
const handleDragEnter = (e: DragEvent) => {
66-
e.preventDefault();
67-
setIsDragging(true);
68-
};
65+
useEffect(() => {
66+
const dropzone = ref.current;
67+
const handleDragEnter = (e: DragEvent) => {
68+
e.preventDefault();
69+
setIsDragging(true);
70+
};
6971

70-
const handleDragLeave = (e: DragEvent) => {
71-
e.preventDefault();
72-
setIsDragging(false);
73-
};
72+
const handleDragLeave = (e: DragEvent) => {
73+
e.preventDefault();
74+
setIsDragging(false);
75+
};
7476

75-
const handleDrop = (e: DragEvent) => {
76-
e.preventDefault();
77-
setIsDragging(false);
77+
const handleDrop = (e: DragEvent) => {
78+
e.preventDefault();
79+
setIsDragging(false);
7880

79-
const files = e.dataTransfer?.files || [];
80-
const file = files[0];
81-
if (file) {
82-
console.log('file dropped:', file);
83-
uploadFile(file);
84-
}
85-
};
86-
87-
useEffect(() => {
88-
const dropzone = ref.current;
81+
const files = e.dataTransfer?.files || [];
82+
const file = files[0];
83+
if (file) {
84+
console.log('file dropped:', file);
85+
uploadFile(file);
86+
}
87+
};
8988
document.addEventListener('dragenter', handleDragEnter);
9089
document.addEventListener('dragover', handleDragEnter);
9190
document.addEventListener('dragleave', handleDragLeave);
@@ -160,7 +159,6 @@ AssetUploader.FilePreview = (props: {asset: any}) => {
160159

161160
AssetUploader.ImagePreview = (props: {asset: any}) => {
162161
const asset = props.asset;
163-
console.log(asset);
164162
return (
165163
<div className="AssetUploader__ImagePreview">
166164
<div className="AssetUploader__ImagePreview__image">

packages/root-cms/ui/components/CopyDocModal/CopyDocModal.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ import {ContextModalProps, useModals} from '@mantine/modals';
33
import {showNotification} from '@mantine/notifications';
44
import {useState} from 'preact/hooks';
55
import {route} from 'preact-router';
6-
import {useModalTheme} from '../../hooks/useModalTheme.js';
7-
import {cmsCopyDoc} from '../../utils/doc.js';
8-
import {isSlugValid, normalizeSlug} from '../../utils/slug.js';
9-
import {SlugInput} from '../SlugInput/SlugInput.js';
10-
import {Text} from '../Text/Text.js';
6+
import {SlugInput} from '@/components/SlugInput/SlugInput.js';
7+
import {Text} from '@/components/Text/Text.js';
8+
import {dbCopyDoc} from '@/db/docs.js';
9+
import {useModalTheme} from '@/hooks/useModalTheme.js';
10+
import {isSlugValid, normalizeSlug} from '@/utils/slug.js';
11+
1112
import './CopyDocModal.css';
1213

1314
const MODAL_ID = 'CopyDocModal';
@@ -60,7 +61,7 @@ export function CopyDocModal(modalProps: ContextModalProps<CopyDocModalProps>) {
6061

6162
const toDocId = `${toCollectionId}/${cleanSlug}`;
6263
try {
63-
await cmsCopyDoc(fromDocId, toDocId, {overwrite: confirmOverwrite});
64+
await dbCopyDoc(fromDocId, toDocId, {overwrite: confirmOverwrite});
6465
context.closeModal(id);
6566
showNotification({
6667
title: 'Copied!',

packages/root-cms/ui/components/DataSourceForm/DataSourceForm.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {
88
import {showNotification} from '@mantine/notifications';
99
import {useEffect, useRef, useState} from 'preact/hooks';
1010
import {route} from 'preact-router';
11-
import {useGapiClient} from '../../hooks/useGapiClient.js';
1211
import {
1312
DataSource,
1413
DataSourceType,
@@ -17,10 +16,11 @@ import {
1716
addDataSource,
1817
getDataSource,
1918
updateDataSource,
20-
} from '../../utils/data-source.js';
21-
import {parseSpreadsheetUrl} from '../../utils/gsheets.js';
22-
import {notifyErrors} from '../../utils/notifications.js';
23-
import {isSlugValid} from '../../utils/slug.js';
19+
} from '@/db/data-sources.js';
20+
import {useGapiClient} from '@/hooks/useGapiClient.js';
21+
import {parseSpreadsheetUrl} from '@/utils/gsheets.js';
22+
import {notifyErrors} from '@/utils/notifications.js';
23+
import {isSlugValid} from '@/utils/slug.js';
2424
import './DataSourceForm.css';
2525

2626
const HTTP_URL_HELP = 'Enter the URL to make the HTTP request.';

packages/root-cms/ui/components/DataSourceStatusButton/DataSourceStatusButton.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ import {Button, Tooltip} from '@mantine/core';
22
import {showNotification, updateNotification} from '@mantine/notifications';
33
import {Timestamp} from 'firebase/firestore';
44
import {useState} from 'preact/hooks';
5-
import {useGapiClient} from '../../hooks/useGapiClient.js';
5+
import {TimeSinceActionTooltip} from '@/components/TimeSinceActionTooltip/TimeSinceActionTooltip.js';
66
import {
77
DataSource,
88
publishDataSource,
99
syncDataSource,
10-
} from '../../utils/data-source.js';
11-
import {TimeSinceActionTooltip} from '../TimeSinceActionTooltip/TimeSinceActionTooltip.js';
10+
} from '@/db/data-sources.js';
11+
import {useGapiClient} from '@/hooks/useGapiClient.js';
1212
import './DataSourceStatusButton.css';
1313

1414
export interface DataSourceStatusButtonProps {

packages/root-cms/ui/components/DocActionsMenu/DocActionsMenu.tsx

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,20 @@ import {
1212
IconLockOpen,
1313
IconTrash,
1414
} from '@tabler/icons-preact';
15-
import {useModalTheme} from '../../hooks/useModalTheme.js';
15+
import {useCopyDocModal} from '@/components/CopyDocModal/CopyDocModal.js';
16+
import {useLockPublishingModal} from '@/components/LockPublishingModal/LockPublishingModal.js';
17+
import {Text} from '@/components/Text/Text.js';
18+
import {useVersionHistoryModal} from '@/components/VersionHistoryModal/VersionHistoryModal.js';
1619
import {
1720
CMSDoc,
18-
cmsDeleteDoc,
19-
cmsRevertDraft,
20-
cmsUnpublishDoc,
21-
cmsUnscheduleDoc,
21+
dbDeleteDoc,
22+
dbRevertDraft,
23+
dbUnpublishDoc,
24+
dbUnscheduleDoc,
2225
testIsScheduled,
2326
testPublishingLocked,
24-
} from '../../utils/doc.js';
25-
import {useCopyDocModal} from '../CopyDocModal/CopyDocModal.js';
26-
import {useLockPublishingModal} from '../LockPublishingModal/LockPublishingModal.js';
27-
import {Text} from '../Text/Text.js';
28-
import {useVersionHistoryModal} from '../VersionHistoryModal/VersionHistoryModal.js';
27+
} from '@/db/docs.js';
28+
import {useModalTheme} from '@/hooks/useModalTheme.js';
2929

3030
export interface DocActionEvent {
3131
action: 'copy' | 'delete' | 'revert-draft' | 'unpublish' | 'unschedule';
@@ -74,7 +74,7 @@ export function DocActionsMenu(props: DocActionsMenuProps) {
7474
loading: true,
7575
autoClose: false,
7676
});
77-
await cmsRevertDraft(docId);
77+
await dbRevertDraft(docId);
7878
updateNotification({
7979
id: notificationId,
8080
title: 'Discarded draft edited',
@@ -116,7 +116,7 @@ export function DocActionsMenu(props: DocActionsMenuProps) {
116116
loading: true,
117117
autoClose: false,
118118
});
119-
await cmsUnpublishDoc(docId);
119+
await dbUnpublishDoc(docId);
120120
updateNotification({
121121
id: notificationId,
122122
title: 'Unpublished!',
@@ -157,7 +157,7 @@ export function DocActionsMenu(props: DocActionsMenuProps) {
157157
loading: true,
158158
autoClose: false,
159159
});
160-
await cmsUnscheduleDoc(docId);
160+
await dbUnscheduleDoc(docId);
161161
updateNotification({
162162
id: notificationId,
163163
title: 'Unscheduled!',
@@ -199,7 +199,7 @@ export function DocActionsMenu(props: DocActionsMenuProps) {
199199
loading: true,
200200
autoClose: false,
201201
});
202-
await cmsDeleteDoc(docId);
202+
await dbDeleteDoc(docId);
203203
updateNotification({
204204
id: notificationId,
205205
title: 'Deleted!',

packages/root-cms/ui/components/DocDiffViewer/DocDiffViewer.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import {Button, Loader} from '@mantine/core';
22
import {Differ, Viewer as JsonDiffViewer} from 'json-diff-kit';
33
import {useEffect, useState} from 'preact/hooks';
4-
import {CMSDoc, cmsReadDocVersion, unmarshalData} from '../../utils/doc.js';
5-
6-
import 'json-diff-kit/dist/viewer.css';
4+
import {CMSDoc, unmarshalData} from '@/db/docs.js';
5+
import {dbGetDocVersion} from '@/db/versions.js';
6+
import {joinClassNames} from '@/utils/classes.js';
7+
import {getTimeAgo} from '@/utils/time.js';
78
import 'json-diff-kit/dist/viewer-monokai.css';
9+
import 'json-diff-kit/dist/viewer.css';
810
import './DocDiffViewer.css';
9-
import {getTimeAgo} from '../../utils/time.js';
10-
import {joinClassNames} from '../../utils/classes.js';
1111

1212
export interface DocVersionId {
1313
/** Doc id, e.g. `Pages/foo`. */
@@ -44,8 +44,8 @@ export function DocDiffViewer(props: DocDiffViewerProps) {
4444
async function init() {
4545
setLoading(true);
4646
const [leftDoc, rightDoc] = await Promise.all([
47-
cmsReadDocVersion(left.docId, left.versionId),
48-
cmsReadDocVersion(right.docId, right.versionId),
47+
dbGetDocVersion(left.docId, left.versionId),
48+
dbGetDocVersion(right.docId, right.versionId),
4949
]);
5050
setLeftDoc(leftDoc);
5151
setRightDoc(rightDoc);

0 commit comments

Comments
 (0)