fix(ui): сохранять устройство диагностики в URL
This commit is contained in:
1 parent
1b91ba4e1d
commit
d0c715e93c
7 files changed
+89
-28
No files matched your search
@@ -0,0 +1,5 @@
|
||||
import { test } from "node:test"
|
||||
import assert from "node:assert/strict"
|
||||
import {readProbeUrl,patchProbeUrl} from "./probe-url"
|
||||
test("URL диагностики отклоняет повтор/пустой/невалидный id",()=>{for(const q of ["server=","server=bad%20id","server=1&server=2"])assert.ok(readProbeUrl(new URLSearchParams(q)).error);assert.equal(readProbeUrl(new URLSearchParams()).server,null);assert.equal(readProbeUrl(new URLSearchParams("server=srv1")).server,"srv1")})
|
||||
test("Выбор изменяет только server и сохраняет остальные параметры",()=>{assert.equal(patchProbeUrl(new URLSearchParams("server=2&keep=1"),"1"),"/probes?keep=1&server=1");assert.equal(patchProbeUrl(new URLSearchParams("server=2&keep=1"),null),"/probes?keep=1")})
|
||||
@@ -0,0 +1,10 @@
|
||||
export function readProbeUrl(params: URLSearchParams) {
|
||||
const server=params.get("server")
|
||||
const error=params.getAll("server").length>1?"В ссылке повторяется устройство диагностики."
|
||||
:server!==null&&!/^[a-zA-Z0-9_.:-]{1,64}$/.test(server)?"В ссылке указан некорректный сервер диагностики.":null
|
||||
return {server,error}
|
||||
}
|
||||
export function patchProbeUrl(params:URLSearchParams,server:string|null){
|
||||
const next=new URLSearchParams(params);next.delete("server");if(server)next.set("server",server)
|
||||
return "/probes"+(next.size?"?"+next.toString():"")
|
||||
}
|
||||
Reference in new issue
Block a user