diff --git a/go-backend/internal/store/repo/repository.go b/go-backend/internal/store/repo/repository.go
index 445d565..e3be6e4 100644
--- a/go-backend/internal/store/repo/repository.go
+++ b/go-backend/internal/store/repo/repository.go
@@ -261,7 +261,7 @@ func prepareSQLiteLegacyColumns(db *gorm.DB) error {
m := db.Migrator()
if m.HasTable(&model.Node{}) {
- for _, field := range []string{"ServerIPV4", "ServerIPV6", "ExtraIPs", "TCPListenAddr", "UDPListenAddr", "Inx", "IsRemote", "RemoteURL", "RemoteToken", "RemoteConfig", "Remark", "ExpiryTime", "RenewalCycle"} {
+ for _, field := range []string{"ServerIPV4", "ServerIPV6", "ExtraIPs", "TCPListenAddr", "UDPListenAddr", "Inx", "IsRemote", "RemoteURL", "RemoteToken", "RemoteConfig", "Remark", "ExpiryTime", "RenewalCycle", "ExpiryReminderDismissed"} {
if m.HasColumn(&model.Node{}, field) {
continue
}
diff --git a/vite-frontend/src/pages/node.tsx b/vite-frontend/src/pages/node.tsx
index 143e902..0e76ee2 100644
--- a/vite-frontend/src/pages/node.tsx
+++ b/vite-frontend/src/pages/node.tsx
@@ -1,5 +1,6 @@
import { useState, useEffect, useMemo, useCallback } from "react";
import toast from "react-hot-toast";
+import { parseDate } from "@internationalized/date";
import {
DndContext,
KeyboardSensor,
@@ -39,6 +40,7 @@ import { Progress } from "@/shadcn-bridge/heroui/progress";
import { Accordion, AccordionItem } from "@/shadcn-bridge/heroui/accordion";
import { Select, SelectItem } from "@/shadcn-bridge/heroui/select";
import { Checkbox } from "@/shadcn-bridge/heroui/checkbox";
+import { DatePicker } from "@/shadcn-bridge/heroui/date-picker";
import {
createNode,
getNodeList,
@@ -2374,26 +2376,37 @@ export default function NodePage() {
- 0
- ? new Date(form.expiryTime).toISOString().slice(0, 16)
- : ""
- }
- variant="bordered"
- onChange={(e) =>
- setForm((prev) => ({
- ...prev,
- expiryTime: e.target.value
- ? new Date(e.target.value).getTime()
- : 0,
- }))
+ ? (parseDate(
+ new Date(form.expiryTime).toISOString().split("T")[0],
+ ) as any)
+ : null
}
+ onChange={(date) => {
+ if (date) {
+ const jsDate = new Date(
+ date.year,
+ date.month - 1,
+ date.day,
+ );
+ setForm((prev) => ({
+ ...prev,
+ expiryTime: jsDate.getTime(),
+ }));
+ } else {
+ setForm((prev) => ({
+ ...prev,
+ expiryTime: 0,
+ }));
+ }
+ }}
/>