From cb2abf3be69e53b2e38cfa3e081558663cd4f896 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Wed, 10 Jan 2018 22:21:48 +0000 Subject: [PATCH] Add methods: - enable_localuser() - can be used to disable avatar and re-enable (without deleting it). - remove localuser() - to remove an avatar record completely. Modified methods: - draw() and show() now ignore disabled avatars. --- exec/load/avatar_lib.js | 42 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/exec/load/avatar_lib.js b/exec/load/avatar_lib.js index 64bc340ac5..03529030f9 100644 --- a/exec/load/avatar_lib.js +++ b/exec/load/avatar_lib.js @@ -60,6 +60,32 @@ function write_localuser(usernum, obj) return result; } +function enable_localuser(usernum, enabled) +{ + var file = new File(this.localuser_fname(usernum)); + if(!file.open(file.exists ? 'r+':'w+')) { + return false; + } + var result; + if(!file.iniGetObject("avatar")) + result = false; + else + result = file.iniSetValue("avatar", "disabled", !enabled); + file.close(); + return result; +} + +function remove_localuser(usernum) +{ + var file = new File(this.localuser_fname(usernum)); + if(!file.open(file.exists ? 'r+':'w+')) { + return false; + } + var result = file.iniRemoveSection("avatar"); + file.close(); + return result; +} + function write_netuser(username, netaddr, obj) { var file = new File(this.netuser_fname(netaddr)); @@ -104,7 +130,7 @@ function read(usernum, username, netaddr) function update_localuser(usernum, data) { var obj = read_localuser(usernum); - if(obj == false) + if(!obj) obj = { created: new Date() }; obj.data = data; obj.updated = new Date(); @@ -122,11 +148,19 @@ function import_file(usernum, filename, offset) return update_localuser(usernum, base64_encode(graphic.BIN)); } +function enabled(obj) +{ + return typeof obj == 'object' + && typeof obj.data == 'string' + && obj.data.length + && !obj.disabled; +} + // Uses Graphic.draw() at an absolute screen coordinate function draw(usernum, username, netaddr, above, right) { var avatar = this.read(usernum, username, netaddr); - if(!avatar) + if(!enabled(avatar)) return false; load('graphic.js'); var graphic = new Graphic(this.defs.width, this.defs.height); @@ -154,14 +188,14 @@ function draw(usernum, username, netaddr, above, right) function show(usernum, username, netaddr) { var avatar = this.read(usernum, username, netaddr); - if(!avatar) + if(!enabled(avatar)) return false; load('graphic.js'); var graphic = new Graphic(this.defs.width, this.defs.height); graphic.attr_mask = ~graphic.defs.BLINK; // Disable blink attribute (consider iCE colors?) try { graphic.BIN = base64_decode([avatar.data]); - console.write(graphic.ANSI); + console.print(graphic.ANSI); } catch(e) { return false; }; -- GitLab