From 536e5c553d201b266d9efc016436e532a0f7b964 Mon Sep 17 00:00:00 2001 From: Rizqika Date: Tue, 19 Nov 2024 17:49:04 +0700 Subject: [PATCH] Slicing UI Announcement-Message --- src/assets/icon/cloud-download.png | Bin 0 -> 827 bytes src/assets/icon/index.js | 3 + .../Sms/Verification/Section/Announcement.jsx | 637 +++++++++++++++++- 3 files changed, 632 insertions(+), 8 deletions(-) create mode 100644 src/assets/icon/cloud-download.png diff --git a/src/assets/icon/cloud-download.png b/src/assets/icon/cloud-download.png new file mode 100644 index 0000000000000000000000000000000000000000..bb70d1b7b595522a170197e99bb9acfd7fee400c GIT binary patch literal 827 zcmV-B1H}A^P)500009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP$YSW`|=a|3RWaD(2U=?Tal(YR~UB-|i90bW*0Jdc^N zQ`N>!$8{uxlz-!D^C$sK|ZO80bwAK z!uyTgC?QZ{^7^b|y-w#z7%9{M#9jU8(u3&TSM1o&E%ve z4_0yi$`9sx8|laZ>4ZxSuiFe!-fJd7w2F_f&``z75HGR^^|l2WASfASG3e&8O+Zfa z*hMW23y}}%CVt{eTmah01?2Hd!eU$tv;KZ`qiJJZ^^W#}u`7^yI~+keKBeFCUw^$M zRGxpJ$y1>wx;kCc4~j7qBo-^CJL45_lo!rU7^D}^j()9lH3WY#8`VFTRn|dOi3&iu z%iX>=$R5EsH>r+?_14BNE-Ir=kxPgZjPW1S$PfNgaTh6pZ1s~?FcwJ3&$`~`JJiz) z&1)-UFK6k*%tPiULpX}iKxO|i)l$~6Wx_~1LgCC_RWmJX??k(Rc?2{--VbGEo { + const [inputValueApplication, setInputValueApplication] = useState(''); + const [selectedQuota, setSelectedQuota] = useState(0); + const [applicationIds, setApplicationIds] = useState([]); + const [errorMessage, setErrorMessage] = useState(''); + const [isServer, setIsServer] = useState(true); + + const applicationOptions = applicationIds.map(app => ({ + value: app.id, // This is what will be sent when an option is selected + label: app.name // This is what will be displayed in the dropdown + })); + + const handleInputChangeApplication = (inputValue) => { + setInputValueApplication(inputValue); + }; + + const handleApplicationChange = (selectedOption) => { + const selectedId = selectedOption.value; + const selectedApp = applicationIds.find(app => app.id === parseInt(selectedId)); + + setApplicationId(selectedOption ? selectedOption.value : ''); + + if (selectedApp) { + setSelectedQuota(selectedApp.quota); + } + }; + + useEffect(() => { + const fetchApplicationIds = async () => { + try { + setIsLoading(true); + const response = await fetch(`${BASE_URL}/application/list`, { + method: 'GET', + headers: { + 'accept': 'application/json', + 'x-api-key': API_KEY, + }, + }); + + if (!response.ok) { + throw new Error('Failed to fetch application IDs'); + } + + const data = await response.json(); + console.log('Response Data:', data); + + if (data.status_code === 200) { + setApplicationIds(data.details.data); + setIsServer(true); + } else { + setIsServer(false); + throw new Error(data.details.message || 'Failed to fetch application IDs'); + } + } catch (error) { + setErrorMessage(error.message || 'Error fetching application IDs'); + setIsServer(false); + } finally { + setIsLoading(false); + } + }; + + fetchApplicationIds(); + }, []); + + // Logic to handle the server down state should be inside the render logic, not around useEffect + if (!isServer) { + return ( +
+ Server Down Animation +

Server tidak dapat diakses

+

{errorMessage || 'Silakan periksa koneksi internet Anda atau coba lagi nanti.'}

+ +
+ ); + } + + return ( +
+ {/* Select Application ID */} +
+
+
+