Skip to content

Commit e0ffd3c

Browse files
committed
Use useLocalStorage util instead of my own one
1 parent ee20e5d commit e0ffd3c

File tree

3 files changed

+24
-58
lines changed

3 files changed

+24
-58
lines changed

src/add-package-to-track.tsx

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { Form, ActionPanel, Action, showToast, Toast, useNavigation } from "@raycast/api";
22
import providers from "./providers";
33
import { FormValidation, useForm } from "@raycast/utils";
4-
import { addTracking } from "./storage";
54
import { Track } from "./track";
65
import { randomUUID } from "node:crypto";
76

@@ -11,7 +10,11 @@ interface AddTrackingForm {
1110
trackingNumber: string;
1211
}
1312

14-
export default function AddCommand() {
13+
export default function AddCommand({
14+
props: { tracking, setTracking, isLoading },
15+
}: {
16+
props: { tracking: Track[]; setTracking: (value: Track[]) => Promise<void>; isLoading: boolean };
17+
}) {
1518
const { pop } = useNavigation();
1619

1720
const { handleSubmit, itemProps } = useForm<AddTrackingForm>({
@@ -23,7 +26,7 @@ export default function AddCommand() {
2326
carrier: trackingForm.carrier,
2427
packages: [],
2528
};
26-
await addTracking(track);
29+
await setTracking((tracking || []).concat(track));
2730

2831
await showToast({
2932
style: Toast.Style.Success,
@@ -42,6 +45,7 @@ export default function AddCommand() {
4245

4346
return (
4447
<Form
48+
isLoading={isLoading}
4549
actions={
4650
<ActionPanel>
4751
<Action.SubmitForm onSubmit={handleSubmit} />

src/storage.ts

-28
This file was deleted.

src/track-packages.tsx

+17-27
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React, { useEffect, useState } from "react";
21
import {
32
Action,
43
ActionPanel,
@@ -18,18 +17,18 @@ import providers from "./providers";
1817
import Package from "./package";
1918
import { Track } from "./track";
2019
import AddCommand from "./add-package-to-track";
21-
import { getTracking, removeTracking } from "./storage";
20+
import { useLocalStorage } from "@raycast/utils";
2221

2322
export default function TrackCommand() {
24-
const [tracking, setTracking] = useState<Track[]>([]);
25-
26-
useEffect(() => {
27-
fetchTracking(setTracking);
28-
}, []);
23+
const {
24+
value: tracking,
25+
setValue: setTracking,
26+
isLoading,
27+
} = useLocalStorage<Track[]>("tracking", environment.isDevelopment ? sortTracking(tempData) : []);
2928

3029
return (
31-
<List>
32-
{tracking.map((item) => (
30+
<List isLoading={isLoading}>
31+
{tracking?.map((item) => (
3332
<List.Item
3433
key={item.id}
3534
id={item.id.toString()}
@@ -58,8 +57,7 @@ export default function TrackCommand() {
5857
title="Track New Delivery"
5958
icon={Icon.Plus}
6059
shortcut={Keyboard.Shortcut.Common.New}
61-
target={<AddCommand />}
62-
onPop={() => fetchTracking(setTracking)}
60+
target={<AddCommand props={{ tracking, setTracking, isLoading }} />}
6361
/>
6462
</ActionPanel>
6563
}
@@ -69,23 +67,15 @@ export default function TrackCommand() {
6967
);
7068
}
7169

72-
async function fetchTracking(setTracking: React.Dispatch<React.SetStateAction<Track[]>>) {
73-
let tracking: Track[] = await getTracking();
74-
75-
if (environment.isDevelopment) {
76-
// running the development version
77-
tracking = tracking.concat(tempData);
78-
}
79-
80-
const sortedTracking = sortTracking(tracking);
81-
setTracking(sortedTracking);
82-
}
83-
8470
async function deleteTracking(
8571
id: string,
86-
tracking: Track[],
87-
setTracking: React.Dispatch<React.SetStateAction<Track[]>>,
72+
tracking: Track[] | undefined,
73+
setTracking: (value: Track[]) => Promise<void>,
8874
) {
75+
if (!tracking) {
76+
return;
77+
}
78+
8979
const nameOfTrackToDelete = tracking.find((track) => track.id === id)?.name ?? "Unknown";
9080

9181
const options: Alert.Options = {
@@ -103,8 +93,8 @@ async function deleteTracking(
10393
return;
10494
}
10595

106-
await removeTracking(id);
107-
await fetchTracking(setTracking);
96+
const reducedTracking = tracking.filter((track) => track.id !== id);
97+
await setTracking(reducedTracking);
10898

10999
await showToast({
110100
style: Toast.Style.Success,

0 commit comments

Comments
 (0)