wip: permissions does not inherit from ServerStored anymore

This commit is contained in:
Yohan Boniface 2025-03-26 10:54:00 +01:00
parent 0389e9a185
commit 6b2038e83e
2 changed files with 2 additions and 59 deletions

View file

@ -7,12 +7,10 @@ import * as Utils from './utils.js'
// Dedicated object so we can deal with a separate dirty status, and thus // Dedicated object so we can deal with a separate dirty status, and thus
// call the endpoint only when needed, saving one call at each save. // call the endpoint only when needed, saving one call at each save.
export class MapPermissions extends ServerStored { export class MapPermissions {
constructor(umap) { constructor(umap) {
super()
this.setProperties(umap.properties.permissions) this.setProperties(umap.properties.permissions)
this._umap = umap this._umap = umap
this._isDirty = false
this.sync = umap.syncEngine.proxy(this) this.sync = umap.syncEngine.proxy(this)
} }
@ -196,7 +194,6 @@ export class MapPermissions extends ServerStored {
} }
async save() { async save() {
if (!this.isDirty) return
const formData = new FormData() const formData = new FormData()
if (!this.isAnonymousMap() && this.properties.editors) { if (!this.isAnonymousMap() && this.properties.editors) {
const editors = this.properties.editors.map((u) => u.id) const editors = this.properties.editors.map((u) => u.id)
@ -255,9 +252,8 @@ export class MapPermissions extends ServerStored {
} }
} }
export class DataLayerPermissions extends ServerStored { export class DataLayerPermissions {
constructor(umap, datalayer) { constructor(umap, datalayer) {
super()
this._umap = umap this._umap = umap
this.properties = Object.assign( this.properties = Object.assign(
{ {
@ -305,7 +301,6 @@ export class DataLayerPermissions extends ServerStored {
} }
async save() { async save() {
if (!this.isDirty) return
const formData = new FormData() const formData = new FormData()
formData.append('edit_status', this.properties.edit_status) formData.append('edit_status', this.properties.edit_status)
const [data, response, error] = await this._umap.server.post( const [data, response, error] = await this._umap.server.post(

View file

@ -1,52 +0,0 @@
const _queue = new Set()
export let isDirty = false
export async function save() {
for (const obj of _queue) {
const ok = await obj.save()
if (!ok) break
remove(obj)
}
}
export function clear() {
_queue.clear()
onUpdate()
}
function add(obj) {
_queue.add(obj)
onUpdate()
}
function remove(obj) {
_queue.delete(obj)
onUpdate()
}
function has(obj) {
return _queue.has(obj)
}
function onUpdate() {
isDirty = Boolean(_queue.size)
// document.body.classList.toggle('umap-is-dirty', isDirty)
}
export class ServerStored {
set isDirty(status) {
if (status) {
add(this)
} else {
remove(this)
}
this.onDirty(status)
}
get isDirty() {
return has(this)
}
onDirty(status) {}
}