PageSourceSearch

https://aviumui.org/assets/entries/src_pages_admin_devices_-codename_versions_new.yWC-NubP.js

js aviumui.org collected 2026-09-25 22:37:24 UTC 8,160 bytes, 1 lines download raw bytes

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