PageSourceSearch

https://aviumui.org/assets/entries/src_pages_admin_devices_-codename.AfGxKLVg.js

js aviumui.org collected 2026-09-25 22:37:16 UTC 10,462 bytes, 1 lines download raw bytes

1import{_ as M,r as L,f as o,b as e,A as F,F as m,h as p,z as d,e as h,x as y,C as J,u as r,w as v,t as n,m as H,l as G,k as q,s as K}from"../chunks/chunk-D6Oav43O.js";import{n as l}from"../chunks/chunk-lzWkO0SH.js";import"../chunks/chunk-D1JYe4Qp.js";import{a as f}from"../chunks/chunk-pJ2yq5Pf.js";/* empty css                      *//* empty css                      *//* empty css                      *//* empty css                      */import"../chunks/chunk-BwNI8fUT.js";const Q={class:"device-detail"},W={class:"md3-card detail-card"},X={key:0,class:"md3-loading"},Y=["innerHTML"],Z={class:"header"},ee={class:"title-wrap"},te={class:"title"},oe={class:"code"},ne={class:"meta"},ie={key:0,class:"md3-chip"},ae={style:{display:"flex","align-items":"center",gap:"8px"}},se={class:"maintainers section-card"},de={class:"section-head"},le={key:0,class:"head-actions"},ce={class:"section-body"},re={key:0,class:"chips"},ue={key:1,class:"names empty"},ve={key:0,class:"versions section-card"},me={key:0,class:"md3-list"},pe={class:"info"},he={class:"name"},fe={class:"meta"},_e={key:0,class:"variants"},ye={class:"md3-ops"},ke=["onClick"],ge=["onClick"],be={key:1,class:"empty"},Ce={key:1,class:"recoveries section-card"},we={key:0,class:"md3-list"},Te={class:"info"},Se={class:"name"},De={class:"meta"},Ee={class:"md3-ops"},xe=["onClick"],Pe=["onClick"],Ae={key:1,class:"empty"},Ue={key:2,class:"vendorboots section-card"},$e={key:0,class:"md3-list"},je={class:"info"},ze={class:"name"},Re={class:"meta"},Ve={class:"md3-ops"},Be=["onClick"],Ne=["onClick"],Ie={key:1,class:"empty"},Oe={__name:"+Page",setup(Fe){const D=J(),c=decodeURIComponent(D?.routeParams?.codename||""),S=v(!0),_=v(null),u=v(null),k=v([]),C=v([]),w=v([]),T=v([]),g=v(!1);async function E(){const a=await f("/api/user/info",{method:"GET"});if(!a?.ok){await l("/admin/login");return}const t=(await a.json().catch(()=>({})))?.data?.users;_.value=t}async function b(){const a=await f(`/api/device/detail?codename=${encodeURIComponent(c)}`,{method:"GET"}),i=await a.json().catch(()=>({}));if(!a.ok){await r({type:"alert",title:"Error",content:i?.message||"Failed to load device"});return}u.value=i?.data?.device||null,k.value=i?.data?.maintainers||[],C.value=i?.data?.versions||[],w.value=i?.data?.recoveries||[],T.value=i?.data?.vendorBoots||[];const t=k.value.some(s=>s.id===_.value?.id);g.value=!!(_.value?.admin||t),S.value=!1}function x(){l("/admin/devices")}function P(){l(`/admin/devices/${encodeURIComponent(c)}/maintainers`)}function A(){l(`/admin/devices/${encodeURIComponent(c)}/versions/new`)}function U(a){l(`/admin/devices/${encodeURIComponent(c)}/versions/${a.id}`)}function $(){l(`/admin/devices/${encodeURIComponent(c)}/recoveries/new`)}function j(a){l(`/admin/devices/${encodeURIComponent(c)}/recoveries/${a.id}`)}function z(){l(`/admin/devices/${encodeURIComponent(c)}/vendor_boots/new`)}function R(a){l(`/admin/devices/${encodeURIComponent(c)}/vendor_boots/${a.id}`)}function V(){l(`/admin/devices/${encodeURIComponent(c)}/edit`)}async function B(){if(await r({type:"confirm",title:"Confirm",content:`Delete device ${u.value?.name} (${u.value?.codename})? This cannot be undone.`,cancelText:"Cancel",okText:"Delete"})==="ok")try{const i=await f("/api/device/delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:u.value?.id})}),t=await i.json().catch(()=>({}));if(!i.ok)throw new Error(t?.message||"Delete failed");await l("/admin/devices")}catch(i){await r({type:"alert",title:"Error",content:String(i?.message||i)})}}async function N(a){if(await r({type:"confirm",title:"Confirm",content:`Delete version ${a.versionName}?`,cancelText:"Cancel",okText:"Delete"})!=="ok")return;const t=await f("/api/device/version.delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a.id})}),s=await t.json().catch(()=>({}));if(!t.ok){await r({type:"alert",title:"Error",content:s?.message||"Delete failed"});return}await b()}async function I(a){if(await r({type:"confirm",title:"Confirm",content:`Delete recovery #${a.id}?`,cancelText:"Cancel",okText:"Delete"})!=="ok")return;const t=await f("/api/device/recovery.delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a.id})}),s=await t.json().catch(()=>({}));if(!t.ok){await r({type:"alert",title:"Error",content:s?.message||"Delete failed"});return}await b()}async function O(a){if(await r({type:"confirm",title:"Confirm",content:`Delete vendor boot #${a.id}?`,cancelText:"Cancel",okText:"Delete"})!=="ok")return;const t=await f("/api/device/vendor_boot.delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a.id})}),s=await t.json().catch(()=>({}));if(!t.ok){await r({type:"alert",title:"Error",content:s?.message||"Delete failed"});return}await b()}return L(async()=>{await E(),await b()}),(a,i)=>(n(),o("div",Q,[e("div",W,[S.value?(n(),o("div",X,[e("div",{class:"spinner",innerHTML:F(H)},null,8,Y)])):(n(),o(m,{key:1},[e("header",Z,[e("div",ee,[e("h1",te,[p(d(u.value?.name),1),e("span",oe," · "+d(u.value?.codename),1)]),e("div",ne,[p(d(u.value?.manufacturer)+" ",1),u.value?.official?(n(),o("span",ie,"Official")):h("v-if",!0)])]),e("div",ae,[_.value?.admin?(n(),o(m,{key:0},[e("button",{class:"md3-btn md3-btn--outlined",onClick:V},"Edit"),e("button",{class:"md3-btn md3-btn--outlined",onClick:B},"Delete")],64)):h("v-if",!0),e("button",{class:"md3-btn md3-btn--outlined",onClick:x},[...i[0]||(i[0]=[e("span",{class:"material-icons-round"},"arrow_back",-1),p(" Back ",-1)])])])]),e("section",se,[e("div",de,[i[1]||(i[1]=e("div",null,[e("h2",null,[e("span",{class:"material-icons-round h2-icon"},"badge"),p(" Maintainers")]),e("p",{class:"section-desc"},"People maintaining this device")],-1)),_.value?.admin?(n(),o("div",le,[e("button",{class:"md3-btn md3-btn--tonal",onClick:P},"Edit")])):h("v-if",!0)]),e("div",ce,[k.value.length?(n(),o("div",re,[(n(!0),o(m,null,y(k.value,t=>
1(n(),o("span",{class:"md3-chip",key:t.id},d(t.name),1))),128))])):(n(),o("div",ue,"None"))])]),g.value?(n(),o("section",ve,[e("div",{class:"section-head"},[i[2]||(i[2]=e("div",null,[e("h2",null,[e("span",{class:"material-icons-round h2-icon"},"system_update_alt"),p(" Versions")]),e("p",{class:"section-desc"},"Manage device builds and changelogs")],-1)),e("div",{class:"head-actions"},[e("button",{class:"md3-btn md3-btn--filled",onClick:A},"Add Version")])]),C.value.length?(n(),o("div",me,[(n(!0),o(m,null,y(C.value,t=>(n(),o("div",{class:"md3-row",key:t.id},[e("div",pe,[e("div",he,d(t.versionName),1),e("div",fe,"#"+d(t.id)+" · "+d(t.androidVersion)+" · "+d(t.buildNumber),1),t.files?.length?(n(),o("div",_e,[(n(!0),o(m,null,y(t.files,s=>(n(),o("span",{class:"md3-chip md3-chip--outlined",key:s.id||s.label},d(s.label),1))),128))])):h("v-if",!0)]),e("div",ye,[e("button",{class:"md3-btn md3-btn--outlined",onClick:s=>U(t)},"Edit",8,ke),e("button",{class:"md3-btn md3-btn--outlined",onClick:s=>N(t)},"Delete",8,ge)])]))),128))])):(n(),o("div",be,"No versions yet."))])):h("v-if",!0),g.value?(n(),o("section",Ce,[e("div",{class:"section-head"},[i[3]||(i[3]=e("div",null,[e("h2",null,[e("span",{class:"material-icons-round h2-icon"},"health_and_safety"),p(" Recoveries")]),e("p",{class:"section-desc"},"Manage recovery packages for this device")],-1)),e("div",{class:"head-actions"},[e("button",{class:"md3-btn md3-btn--filled",onClick:$},"Add Recovery")])]),w.value.length?(n(),o("div",we,[(n(!0),o(m,null,y(w.value,t=>
1(n(),o("div",{class:"md3-row",key:t.id},[e("div",Te,[e("div",Se,d(t.minVersion),1),e("div",De,"#"+d(t.id),1)]),e("div",Ee,[e("button",{class:"md3-btn md3-btn--outlined",onClick:s=>j(t)},"Edit",8,xe),e("button",{class:"md3-btn md3-btn--outlined",onClick:s=>I(t)},"Delete",8,Pe)])]))),128))])):(n(),o("div",Ae,"No recoveries yet."))])):h("v-if",!0),g.value?(n(),o("section",Ue,[e("div",{class:"section-head"},[i[4]||(i[4]=e("div",null,[e("h2",null,[e("span",{class:"material-icons-round h2-icon"},"memory"),p(" Vendor Boot")]),e("p",{class:"section-desc"},"Manage vendor_boot packages for this device")],-1)),e("div",{class:"head-actions"},[e("button",{class:"md3-btn md3-btn--filled",onClick:z},"Add Vendor Boot")])]),T.value.length?(n(),o("div",$e,[(n(!0),o(m,null,y(T.value,t=>(n(),o("div",{class:"md3-row",key:t.id},[e("div",je,[e("div",ze,d(t.minVersion),1),e("div",Re,"#"+d(t.id),1)]),e("div",Ve,[e("button",{class:"md3-btn md3-btn--outlined",onClick:s=>R(t)},"Edit",8,Be),e("button",{class:"md3-btn md3-btn--outlined",onClick:s=>O(t)},"Delete",8,Ne)])]))),128))])):(n(),o("div",Ie,"No vendor boot packages yet."))])):h("v-if",!0)],64))])]))}},Me=M(Oe,[["__scopeId","data-v-be350086"]]),Le=Object.freeze(Object.defineProperty({__proto__:null,default:Me},Symbol.toStringTag,{value:"Module"})),Ze={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:K}},Page:{type:"standard",definedAtData:{filePathToShowToUser:"/src/pages/admin/devices/@codename/+Page.vue",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:Le}},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:q}]},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{Ze 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.