https://aviumui.org/assets/entries/src_pages_admin_devices_-codename_versions_-versionId.8fONx1Ay.js
1import{_ as j,r as F,u as v,f as u,b as t,h as f,z as b,A as V,L as s,G as d,F as R,x as B,C as I,w as h,t as c,m as M,E as $,e as O,l as G,k as H,s as J}from"../chunks/chunk-D6Oav43O.js";import{n as k}from"../chunks/chunk-lzWkO0SH.js";import"../chunks/chunk-D1JYe4Qp.js";import{a as g}from"../chunks/chunk-pJ2yq5Pf.js";/* empty css *//* empty css *//* empty css *//* empty css */import"../chunks/chunk-BwNI8fUT.js";const W={class:"version-editor"},q={class:"md3-card version-card"},K={class:"header"},Q={class:"title"},X={key:0,class:"md3-loading"},Y=["innerHTML"],Z={key:1,class:"form"},ee={class:"field"},te={class:"ctr"},ae={class:"field"},oe={class:"ctr"},le={class:"field"},ie={class:"ctr"},ne={class:"field"},se={class:"ctr"},de={class:"field files-field"},re={class:"ctr files-ctr"},ue={class:"file-card-head"},ce={class:"file-title"},me=["onClick","disabled"],pe={class:"file-grid"},ve={class:"variant-label-control"},fe=["onUpdate:modelValue"],be=["onUpdate:modelValue"],he=["onUpdate:modelValue"],ge=["onUpdate:modelValue"],ye=["onUpdate:modelValue"],we={class:"footer"},Se=["disabled"],_e={__name:"+Page",setup(Ve){const y=I(),w=decodeURIComponent(y?.routeParams?.codename||""),S=Number(y?.routeParams?.versionId||0),p=()=>({id:null,variantType:"custom",customLabel:"",downloadUrl:"",fileSize:null,checksum:""}),l=h({versionName:"",buildNumber:"",androidVersion:"",changelog:"",files:[p()]}),m=h(!1),_=h(!0);function T(){k(`/admin/devices/${encodeURIComponent(w)}`)}function z(){l.value.files.push(p())}function C(o){l.value.files.length!==1&&l.value.files.splice(o,1)}function P(o){const e=(o||"").trim().toLowerCase();return e==="vanilla"||e==="gms"?{variantType:e,customLabel:""}:{variantType:"custom",customLabel:(o||"").trim()}}function L(o,e){const a=(o.variantType||"custom").trim().toLowerCase();return a==="vanilla"||a==="gms"?a:(o.customLabel||"").trim()||`Variant ${e+1}`}async function N(){return(await g("/api/user/info",{method:"GET"}))?.ok?!0:(await k("/admin/login"),!1)}async function A(){const o=await g(`/api/device/version.detail?id=${S}`,{method:"GET"}),e=await o.json().catch(()=>({}));if(!o.ok)throw new Error(e?.message||"Failed to load");const a=e?.data?.version||{};l.value={versionName:a.versionName||"",buildNumber:a.buildNumber||"",androidVersion:a.androidVersion||"",changelog:a.changelog||"",files:(a.files?.length?a.files:[p()]).map(i=>({id:i.id||null,...P(i.label),downloadUrl:i.downloadUrl||"",fileSize:i.fileSize??null,checksum:i.checksum||""}))}}function E(){return l.value.files.map((o,e)=>{const a=L(o,e),i=(o.downloadUrl||"").trim(),n=(o.checksum||"").trim(),r=o.fileSize,U=r===""||r===null||r===void 0?null:Number(r);return{id:o.id||void 0,label:a||`Variant ${e+1}`,downloadUrl:i,fileSize:Number.isFinite(U)?U:null,checksum:n||null}})}function D(o){const e=new Set;for(const a of o){const i=a.label.toLowerCase();if(e.has(i))return a.label;e.add(i)}return null}async function x(){m.value=!0;try{const o=E();if(!o.length||o.some(r=>!r.downloadUrl))throw new Error("Please provide download URL for each variant");const e=D(o);if(e)throw new Error(`Variant label duplicated: ${e}`);const a={id:S,versionName:l.value.versionName,buildNumber:l.value.buildNumber,androidVersion:l.value.androidVersion,changelog:l.value.changelog,files:o},i=await g("/api/device/version.update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),n=await i.json().catch(()=>({}));if(!i.ok)throw new Error(n?.message||"Update failed");await v({type:"alert",title:"Success",content:"Version updated"}),T()}catch(o){await v({type:"alert",title:"Error",content:String(o?.message||o)})}finally{m.value=!1}}return F(async()=>{if(await N())try{await A()}catch(o){await v({type:"alert",title:"Error",content:String(o?.message||o)})}finally{_.value=!1}}),(o,e)=>(c(),u("div",W,[t("div",q,[t("header",K,[t("h1",Q,[e[4]||(e[4]=t("span",{class:"material-icons-round"},"system_update_alt",-1)),f(" Edit Version · "+b(V(w)),1)]),t("div",{class:"actions"},[t("button",{class:"md3-btn md3-btn--outlined",onClick:T},"Back")])]),_.value?(c(),u("div",X,[t("div",{class:"spinner",innerHTML:V(M)}
1,null,8,Y)])):(c(),u("div",Z,[t("div",ee,[e[5]||(e[5]=t("label",{class:"lab",for:"f-versionName"},"Version name",-1)),t("div",te,[s(t("input",{class:"md3-input",id:"f-versionName","onUpdate:modelValue":e[0]||(e[0]=a=>l.value.versionName=a),placeholder:"e.g. 16.2.0"},null,512),[[d,l.value.versionName,void 0,{trim:!0}]])])]),t("div",ae,[e[6]||(e[6]=t("label",{class:"lab",for:"f-buildTime"},"Build time",-1)),t("div",oe,[s(t("input",{class:"md3-input",id:"f-buildTime","onUpdate:modelValue":e[1]||(e[1]=a=>l.value.buildNumber=a),placeholder:"e.g. 1739404800"},null,512),[[d,l.value.buildNumber,void 0,{trim:!0}]])])]),t("div",le,[e[7]||(e[7]=t("label",{class:"lab",for:"f-androidVersion"},"Android version",-1)),t("div",ie,[s(t("input",{class:"md3-input",id:"f-androidVersion","onUpdate:modelValue":e[2]||(e[2]=a=>l.value.androidVersion=a),placeholder:"e.g. Android 14"},null,512),[[d,l.value.androidVersion,void 0,{trim:!0}]])])]),t("div",ne,[e[8]||(e[8]=t("label",{class:"lab",for:"f-changelog"},"Changelog",-1)),t("div",se,[s(t("textarea",{class:"md3-input",id:"f-changelog","onUpdate:modelValue":e[3]||(e[3]=a=>l.value.changelog=a),placeholder:"What changed in this version"},null,512),[[d,l.value.changelog,void 0,{trim:!0}]])])]),t("div",de,[e[16]||(e[16]=t("label",{class:"lab"},"Download variants",-1)),t("div",re,[(c(!0),u(R,null,B(l.value.files,(a,i)=>(c(),u("div",{class:"file-card",key:a.id||i},[t("div",ue,[t("span",ce,"Variant "+b(i+1),1),t("button",{class:"md3-btn md3-btn--text",type:"button",onClick:n=>C(i),disabled:l.value.files.length===1},[...e[9]||(e[9]=[t("span",{class:"material-icons-round"},"close",-1),f(" Remove ",-1)])],8,me)]),t("div",pe,[e[11]||(e[11]=t("label",null,"Variant label",-1)),t("div",ve,[s(t("select",{class:"md3-input","onUpdate:modelValue":n=>a.variantType=n},[...e[10]||(e[10]=[t("option",{value:"vanilla"},"vanilla",-1),t("option",{value:"gms"},"gms",-1),t("option",{value:"custom"},"custom",-1)])],8,fe),[[$,a.variantType]]),a.variantType==="custom"?s((c(),u("input",{key:0,class:"md3-input","onUpdate:modelValue":n=>a.customLabel=n,placeholder:"e.g. custom-cn"},null,8,be)),[[d,a.customLabel,void 0,{trim:!0}]]):O("v-if",!0)]),e[12]||(e[12]=t("label",null,"Download URL",-1)),s(t("input",{class:"md3-input","onUpdate:modelValue":n=>a.downloadUrl=n,placeholder:"https://...apk"},null,8,he),[[d,a.downloadUrl,void 0,{trim:!0}]]),e[13]||(e[13]=t("label",null,"File size (bytes)",-1)),s(t("input",{class:"md3-input",type:"number","onUpdate:modelValue":n=>a.fileSize=n,placeholder:"e.g. 123456789"},null,8,ge),[[d,a.fileSize,void 0,{number:!0}]]),e[14]||(e[14]=t("label",null,"Checksum",-1)),s(t("input",{class:"md3-input","onUpdate:modelValue":n=>a.checksum=n,placeholder:"e.g. sha1"},null,8,ye),[[d,a.checksum,void 0,{trim:!0}]])])]))),128)),t("button",{class:"md3-btn md3-btn--outlined",type:"button",onClick:z},[...e[15]||(e[15]=[t("span",{class:"material-icons-round"},"add",-1),f(" Add variant ",-1)])])])])])),t("footer",we,[t("button",{class:"md3-btn md3-btn--filled",disabled:m.value,onClick:x},b(m.value?"Savingâ¦":"Save"),9,Se)])])]))}},Te=j(_e,[["__scopeId","data-v-2b411704"]]),Ue=Object.freeze(Object.defineProperty({__proto__:null,default:Te},Symbol.toStringTag,{value:"Module"})),xe={hasServerOnlyHook:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:!1}},isClientRuntimeLoaded:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:!0}},onBeforeRenderEnv:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:null}},dataEnv:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:null}},guardEnv:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:null}},onRenderClient:{type:"standard",definedAtData:{filePathToShowToUser:"vike-vue/__internal/integration/onRenderClient",fileExportPathToShowToUser:[]},valueSerialized:{type:"pointer-import",value:J}},Page:{type:"standard",definedAtData:{filePathToShowToUser:"/src/pages/admin/devices/@codename/versions/@versionId/+Page.vue",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:Ue}},hydrationCanBeAborted:{type:"standard",definedAtData:{filePathToShowToUser:"vike-vue/config",fileExportPathToShowToUser:["default","hydrationCanBeAborted"]},valueSerialized:{type:"js-serialized",value:!0}},Layout:{type:"cumulative",definedAtData:[{filePathToShowToUser:"/src/pages/+Layout.vue",fileExportPathToShowToUser:[]}],valueSerialized:[{type:"plus-file",exportValues:H}]},title:{type:"standard",definedAtData:{filePathToShowToUser:"/src/pages/+config.js",fileExportPathToShowToUser:["default","title"]},valueSerialized:{type:"js-serialized",value:"AviumUI"}},onCreateApp:{type:"cumulative",definedAtData:[{filePathToShowToUser:"/src/pages/+onCreateApp.js",fileExportPathToShowToUser:[]}],valueSerialized:[{type:"plus-file",exportValues:G}]}};export{xe as configValuesSerialized};
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.