@@ -16,6 +16,48 @@ export default function AdminPage({ params }: { params: { sigID: string } }) {
1616 const [ sigData , setSigData ] = useState < any > ( { } ) ;
1717 const [ leaders , setLeaders ] = useState < any [ ] > ( [ ] ) ;
1818
19+ // 將獲取 leaders 邏輯抽離到單獨的函數中,以便在新增後重新調用
20+ const fetchLeaders = async ( ) => {
21+ try {
22+ const response = await sigAPI . getSigData ( params . sigID ) ;
23+ setSigData ( response ) ;
24+
25+ if ( response . leader && response . leader . length > 0 ) {
26+ setLeaders ( [ ] ) ;
27+
28+ const addedLeaderIds = new Set ( ) ;
29+
30+ await Promise . all (
31+ response . leader . map ( async ( leaderId : string ) => {
32+ try {
33+ if ( addedLeaderIds . has ( leaderId ) ) {
34+ return ;
35+ }
36+
37+ const res = await sigAPI . getUserData ( leaderId ) ;
38+
39+ if ( res ) {
40+ addedLeaderIds . add ( leaderId ) ;
41+ setLeaders ( prev => {
42+ const isDuplicate = prev . some ( leader => leader . _id === res . _id ) ;
43+
44+ if ( ! isDuplicate ) {
45+ return [ ...prev , res ] ;
46+ }
47+ return prev ;
48+ } ) ;
49+ }
50+ } catch ( error ) {
51+ console . error ( `Error fetching data for leader ${ leaderId } :` , error ) ;
52+ }
53+ } )
54+ ) ;
55+ }
56+ } catch ( error : any ) {
57+ console . error ( error . message ) ;
58+ }
59+ } ;
60+
1961 function addLeader ( ) {
2062 Swal . fire ( {
2163 title : "新增 Leader" ,
@@ -64,6 +106,8 @@ export default function AdminPage({ params }: { params: { sigID: string } }) {
64106 confirmButton : "focus:outline-none"
65107 }
66108 } ) ;
109+ // 新增成功後重新獲取 Leaders 列表
110+ fetchLeaders ( ) ;
67111 } else if ( data . status === 4032 ) {
68112 Swal . fire ( {
69113 title : "新增失敗!" ,
@@ -120,53 +164,16 @@ export default function AdminPage({ params }: { params: { sigID: string } }) {
120164 cancelButtonText : "取消"
121165 } ) . then ( async ( result ) => {
122166 if ( result . isConfirmed ) {
123-
124167 console . log ( leaderId ) ;
168+ // 如果要實現刪除後也刷新列表,可以在這裡添加 API 呼叫和刷新邏輯
169+ // 刪除成功後調用 fetchLeaders();
125170 }
126171 } ) ;
127172 }
128173
129174 useEffect ( ( ) => {
130- ( async ( ) => {
131- try {
132- const response = await sigAPI . getSigData ( params . sigID ) ;
133- setSigData ( response ) ;
134-
135- if ( response . leader && response . leader . length > 0 ) {
136- setLeaders ( [ ] ) ;
137-
138- const addedLeaderIds = new Set ( ) ;
139-
140- await Promise . all (
141- response . leader . map ( async ( leaderId : string ) => {
142- try {
143- if ( addedLeaderIds . has ( leaderId ) ) {
144- return ;
145- }
146-
147- const res = await sigAPI . getUserData ( leaderId ) ;
148-
149- if ( res ) {
150- addedLeaderIds . add ( leaderId ) ;
151- setLeaders ( prev => {
152- const isDuplicate = prev . some ( leader => leader . _id === res . _id ) ;
153-
154- if ( ! isDuplicate ) {
155- return [ ...prev , res ] ;
156- }
157- return prev ;
158- } ) ;
159- }
160- } catch ( error ) {
161- console . error ( `Error fetching data for leader ${ leaderId } :` , error ) ;
162- }
163- } )
164- ) ;
165- }
166- } catch ( error : any ) {
167- console . error ( error . message ) ;
168- }
169- } ) ( ) ;
175+ // 初始化時獲取數據
176+ fetchLeaders ( ) ;
170177 } , [ params . sigID ] ) ;
171178
172179 if ( userAccount . isLoading === true ) {
@@ -311,7 +318,7 @@ export default function AdminPage({ params }: { params: { sigID: string } }) {
311318 </ table >
312319 </ div >
313320 </ div >
314- </ div >
315- </ div >
321+ </ div >
322+ </ div >
316323 ) ;
317324}
0 commit comments