Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/lemon-glasses-glow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"headertweaker": patch
---

Make sure existing headers also have a unique ID
4 changes: 2 additions & 2 deletions src/components/header-list/header-item.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ interface HeaderItemProps extends Header {

export const HeaderItem = ({ id, name, value, enabled, openDrawer }: HeaderItemProps) => {
const [headerToDelete, setHeaderToDelete] = useState<Header | null>(null);
const { isDisabled, selectedHeader, setSelectedHeader, updateHeader } = useHeaderTweakerContext();
const { isDisabled, setSelectedHeader, updateHeader } = useHeaderTweakerContext();

return (
<>
Expand Down Expand Up @@ -46,7 +46,7 @@ export const HeaderItem = ({ id, name, value, enabled, openDrawer }: HeaderItemP
disabled={isDisabled}
aria-label="Edit header"
onClick={() => {
setSelectedHeader(selectedHeader ?? { id, name, value, enabled });
setSelectedHeader({ id, name, value, enabled });
openDrawer(true);
}}
>
Expand Down
2 changes: 1 addition & 1 deletion src/components/header-list/header-list.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export const HeaderList = () => {
</tr>
) : (
headers.map((header) => (
<HeaderItem key={`header-${header.name}`} openDrawer={openDrawer} {...header} />
<HeaderItem key={header.id} openDrawer={openDrawer} {...header} />
))
)}
</tbody>
Expand Down
1 change: 0 additions & 1 deletion src/components/import-headers/import-headers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ export const ImportHeaders = () => {
.filter(
({ name }) => !currentHeaders.some((existingHeader) => existingHeader.name === name)
);
validHeaders.forEach(console.log);
setImportedHeaders(validHeaders.length);
await importHeaders(validHeaders);
}
Expand Down
19 changes: 12 additions & 7 deletions src/helpers/header.helper.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
import { isFirefox, storage } from '@constants/index';
import { storage } from '@constants/index';
import type { Header } from '@interfaces/index';
import { v4 as uuidv4 } from 'uuid';

const setHeaders = async (headers: Header[]) => {
if (isFirefox) {
await storage.local.set({ headers });
} else {
storage.local.set({ headers });
}
await storage.local.set({ headers });
};

export const getHeaders = async (): Promise<Header[]> => {
const result = await storage.local.get('headers');
return result.headers || [];
const headers: Header[] = result.headers || [];
const headersWithoutId = headers.some(({ id }) => !id);

if (headersWithoutId) {
const headersWithId = headers.map((h) => (h.id ? h : { ...h, id: uuidv4() }));
await setHeaders(headersWithId);
return headersWithId;
}

return headers;
};

const getSelectedHeader = async (header: Header) => {
Expand Down
9 changes: 2 additions & 7 deletions src/helpers/headertweaker.helper.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,10 @@
import { isFirefox, storage } from '@constants/index';
import { storage } from '@constants/index';
import type { Status } from '@interfaces/index';

const STATUS_KEY = 'isDisabled';

export const setStatus = async (status: Status) => {
if (isFirefox) {
await storage.local.set({ [STATUS_KEY]: status === 'disabled' });
} else {
storage.local.set({ [STATUS_KEY]: status === 'disabled' });
}

await storage.local.set({ [STATUS_KEY]: status === 'disabled' });
return status;
};

Expand Down
Loading