PageSourceSearch

https://portaly.cc/_next/static/chunks/pages/admin/creator-subscri…/[planId]-5ffb7af447529d9f.js

js portaly.cc collected 2026-10-01 10:12:54 UTC 8,809 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[97035],{91916:(e,a,r)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin/creator-subscription/plan-image-upload/[planId]",function(){return r(66427)}])},36795:(e,a,r)=>{"use strict";r.d(a,{A:()=>t});let t=(0,r(96540).createContext)({addSdk:async()=>{},activeSDK:[]})},10767:(e,a,r)=>{"use strict";r.d(a,{A:()=>o});var t=r(96540),i=r(99624),l=r(36795);let o=()=>{let{addSdk:e,activeSDK:a}=(0,t.useContext)(l.A);return(0,t.useEffect)(()=>{a.includes("auth")||setTimeout(()=>e("auth"))},[a]),a.includes("auth")&&(0,i.As)()}},37496:(e,a,r)=>{"use strict";r.d(a,{A:()=>l});var t=r(96540),i=r(10767);let l=()=>{var e;let a=(0,i.A)()||null,r=null!==(e=null==a?void 0:a.currentUser)&&void 0!==e?e:null,l=(0,t.useCallback)((e,a)=>{let r=new Headers(e.headers);return r.set("Authorization","Bearer ".concat(a)),{...e,headers:r}},[]),o=(0,t.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return r?r.getIdToken(e):null},[r]),n=(0,t.useCallback)(async function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!r)throw Error("User is not authenticated");let t=await o();if(!t)throw Error("Failed to acquire bearer token");let i=await fetch(e,l(a,t));if(i.ok)return i.json();let n=Error(await i.text());throw n.response=i,n},[l,r,o]);return{auth:a,currentUser:r,getBearerToken:o,fetchWithAuth:n}}},66427:(e,a,r)=>{"use strict";r.r(a),r.d(a,{default:()=>m});var t=r(2445),i=r(27006),l=r(13368),o=r.n(l),n=r(86715),s=r(96540),d=r(6442),c=r(37496);let u=e=>Array.isArray(e)?e[0]:e,p=(e,a)=>{if(!(e instanceof Error))return a;try{return JSON.parse(e.message).error||e.message}catch(a){return e.message}},m=()=>{var e;let a=(0,n.useRouter)(),r=(0,i.useToast)(),l=(0,d.A)(),{currentUser:m,fetchWithAuth:g}=(0,c.A)(),f=l.formatMessage({defaultMessage:"方案圖片上傳",id:"admin.creatorSubscription.planImageUpload.pageTitle"}),b=l.formatMessage({defaultMessage:"需要登入",id:"admin.creatorSubscription.planImageUpload.authNoticeTitle"}),h=l.formatMessage({defaultMessage:"請先登入有此方案管理權限的 Portaly 帳號。",id:"admin.creatorSubscription.planImageUpload.authNotice"}),M=l.formatMessage({defaultMessage:"方案資訊",id:"admin.creatorSubscription.planImageUpload.planInfoTitle"}),S=l.formatMessage({defaultMessage:"無法讀取方案資訊",id:"admin.creatorSubscription.planImageUpload.planLoadFailed"}),y=l.formatMessage({defaultMessage:"方案 ID",id:"admin.creatorSubscription.planImageUpload.planId"}),I=l.formatMessage({defaultMessage:"方案名稱",id:"admin.creatorSubscription.planImageUpload.name"}),x=l.formatMessage({defaultMessage:"狀態",id:"admin.creatorSubscription.planImageUpload.status"}),U=l.formatMessage({defaultMessage:"價格",id:"admin.creatorSubscription.planImageUpload.price"}),v=l.formatMessage({defaultMessage:"計費週期",id:"admin.creatorSubscription.planImageUpload.billingPeriod"}),Y=l.formatMessage({defaultMessage:"未設定",id:"admin.creatorSubscription.planImageUpload.noValue"}),F=l.formatMessage({defaultMessage:"啟用中",id:"admin.creatorSubscription.planImageUpload.active"}),T=l.formatMessage({defaultMessage:"已停用",id:"admin.creatorSubscription.planImageUpload.inactive"}),w=l.formatMessage({defaultMessage:"圖片檔案",id:"admin.creatorSubscription.planImageUpload.imageFile"}),D=l.formatMessage({defaultMessage:"支援 JPEG、PNG、WebP 或 GIF,檔案大小上限 5 MB。",id:"admin.creatorSubscription.planImageUpload.imageHelp"}),A=l.formatMessage({defaultMessage:"預覽",id:"admin.creatorSubscription.planImageUpload.preview"}),k=l.formatMessage({defaultMessage:"已選取的方案圖片預覽",id:"admin.creatorSubscription.planImageUpload.previewAlt"}),C=l.formatMessage({defaultMessage:"上傳方案圖片",id:"admin.creatorSubscription.planImageUpload.submit"}),P=l.formatMessage({defaultMessage:"方案圖片已上傳",id:"admin.creatorSubscription.planImageUpload.uploadSuccessTitle"}),E=l.formatMessage({defaultMessage:"上傳失敗",id:"admin.creatorSubscription.planImageUpload.uploadFailedTitle"}),R=l.formatMessage({defaultMessage:"未知錯誤",id:"admin.creatorSubscription.planImageUpload.unknownError"}),B={monthly:l.formatMessage({defaultMessage:"每月",id:"admin.creatorSubscription.planImageUpload.billingPeriod.monthly"}),yearly:l.formatMessage({defaultMessage:"每年",id:"admin.creatorSubscription.planImageUpload.billingPeriod.yearly"}
1),"one-time":l.formatMessage({defaultMessage:"單次",id:"admin.creatorSubscription.planImageUpload.billingPeriod.oneTime"})},_="".concat(f," | ").concat("Portaly"),[N,z]=(0,s.useState)(null),[L,H]=(0,s.useState)(null),[O,j]=(0,s.useState)(null),[G,W]=(0,s.useState)(""),[q,J]=(0,s.useState)(!1),[K,X]=(0,s.useState)(!1),V=(0,s.useMemo)(()=>{var e;return(null===(e=u(a.query.planId))||void 0===e?void 0:e.trim())||""},[a.query.planId]),Q=(0,s.useMemo)(()=>V?"/api/creator-subscription/plans/".concat(encodeURIComponent(V)):"",[V]),Z=(0,s.useMemo)(()=>V?"/api/creator-subscription/plans/".concat(encodeURIComponent(V),"/images"):"",[V]),$=!!(m&&V&&N&&!K),ee=(null==O?void 0:O.name)||Y,ea=O?"active"===O.status?F:T:Y,er=O?"dynamic"===O.pricingType?l.formatMessage({defaultMessage:"自由定價",id:"admin.creatorSubscription.planImageUpload.dynamicPricing"}):"".concat(O.currency||"TWD"," ").concat(null!==(e=O.amount)&&void 0!==e?e:0):Y,et=(null==O?void 0:O.billingPeriod)?B[O.billingPeriod]||O.billingPeriod:Y;(0,s.useEffect)(()=>{if(!N){H(null);return}let e=URL.createObjectURL(N);return H(e),()=>{URL.revokeObjectURL(e)}},[N]),(0,s.useEffect)(()=>{if(!Q||!m)return;let e=!0;return(async()=>{J(!0),W("");try{let a=await g(Q,{method:"GET"});e&&j(a.data||null)}catch(a){e&&W(p(a,S))}finally{e&&J(!1)}})(),()=>{e=!1}},[m,Q,g,S]);let ei=async e=>{if(e.preventDefault(),!$||!N||!Z)return;let a=new FormData;a.append("file",N),a.append("filename",N.name),X(!0);try{var t;let e=await g(Z,{method:"POST",body:a});j((null===(t=e.data)||void 0===t?void 0:t.plan)||O),z(null),r({title:P,status:"success"})}catch(e){r({title:E,description:p(e,R),status:"error"})}finally{X(!1)}};return(0,t.FD)(t.FK,{children:[(0,t.Y)(o(),{children:(0,t.Y)("title",{children:_})}),(0,t.Y)(i.Container,{maxW:"3xl",py:{base:8,md:12},children:(0,t.FD)(i.Stack,{spacing:8,children:[(0,t.Y)(i.Heading,{color:"gray.900",fontSize:{base:"2xl",md:"3xl"},children:f}),!m&&(0,t.FD)(i.Alert,{status:"warning",borderRadius:"md",children:[(0,t.Y)(i.AlertIcon,{}),(0,t.FD)(i.Box,{children:[(0,t.Y)(i.AlertTitle,{children:b}),(0,t.Y)(i.AlertDescription,{children:h})]})]}),G&&(0,t.FD)(i.Alert,{status:"error",borderRadius:"md",children:[(0,t.Y)(i.AlertIcon,{}),(0,t.Y)(i.AlertDescription,{children:G})]}),(0,t.Y)(i.Box,{border:"1px solid",borderColor:"gray.200",borderRadius:"md",bg:"white",p:{base:5,md:6},children:(0,t.FD)(i.Stack,{spacing:4,children:[(0,t.Y)(i.Heading,{as:"h2",color:"gray.900",fontSize:"xl",children:M}),(0,t.Y)(i.Skeleton,{isLoaded:!q,children:(0,t.FD)(i.SimpleGrid,{columns:{base:1,md:2},spacing:4,children:[(0,t.FD)(i.Box,{children:[(0,t.Y)(i.Text,{color:"gray.500",fontSize:"sm",children:I}),(0,t.Y)(i.Text,{color:"gray.900",fontWeight:"700",children:ee})]}),(0,t.FD)(i.Box,{children:[(0,t.Y)(i.Text,{color:"gray.500",fontSize:"sm",children:x}),(0,t.Y)(i.Badge,{colorScheme:ea===F?"green":"gray",children:ea})]}),(0,t.FD)(i.Box,{children:[(0,t.Y)(i.Text,{color:"gray.500",fontSize:"sm",children:U}),(0,t.Y)(i.Text,{color:"gray.900",children:er})]}),(0,t.FD)(i.Box,{children:[(0,t.Y)(i.Text,{color:"gray.500",fontSize:"sm",children:v}),(0,t.Y)(i.Text,{color:"gray.900",children:et})]})]})}),(0,t.FD)(i.Box,{children:[(0,t.Y)(i.Text,{color:"gray.500",fontSize:"sm",children:y}),(0,t.Y)(i.Code,{display:"block",p:3,borderRadius:"md",whiteSpace:"pre-wrap",children:V})]})]})}),(0,t.Y)(i.Box,{as:"form",onSubmit:ei,border:"1px solid",borderColor:"gray.200",borderRadius:"md",bg:"white",p:{base:5,md:6},children:(0,t.FD)(i.Stack,{spacing:5,children:[(0,t.FD)(i.FormControl,{isRequired:!0,children:[(0,t.Y)(i.FormLabel,{children:w}),(0,t.Y)(i.Input,{type:"file",accept:"image/jpeg,image/png,image/webp,image/gif",p:1,onChange:e=>{var a;z((null===(a=e.target.files)||void 0===a?void 0:a[0])||null)}}),(0,t.Y)(i.FormHelperText,{children:D})]}),L&&(0,t.FD)(i.Box,{children:[(0,t.Y)(i.Text,{mb:2,fontWeight:"600",color:"gray.700",children:A}),(0,t.Y)(i.Image,{src:L,alt:k,maxH:"220px",borderRadius:"md",objectFit:"contain",border:"1px solid",borderColor:"gray.200",bg:"gray.50"})]}),(0,t.Y)(i.Button,{type:"submit",colorScheme:"teal",isDisabled:!$,isLoading:K,alignSelf:{base:"stretch",md:"flex-start"},children:C})]})})]})})]})}},13368:(e,a,r)=>{e.exports=r(86085)}},e=>{var a=a=>e(e.s=a);e.O(0,[19883,28505,58247,64065,99624,13404,90636,46593,38792],()=>a(91916)),_N_E=e.O()}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.