diff --git a/v2/internal/bridge/client.go b/v2/internal/bridge/client.go index 700b9d30e..b49777061 100644 --- a/v2/internal/bridge/client.go +++ b/v2/internal/bridge/client.go @@ -11,6 +11,10 @@ type BridgeClient struct { messageCache chan string } +func (b BridgeClient) DeleteTrayMenuByID(id string) { + b.session.sendMessage("TD" + id) +} + func NewBridgeClient() *BridgeClient { return &BridgeClient{ messageCache: make(chan string, 100), diff --git a/v2/internal/bridge/dialog_client.go b/v2/internal/bridge/dialog_client.go index 5ec75a5b4..c8ff11284 100644 --- a/v2/internal/bridge/dialog_client.go +++ b/v2/internal/bridge/dialog_client.go @@ -19,6 +19,9 @@ type DialogClient struct { log *logger.Logger } +func (d *DialogClient) DeleteTrayMenuByID(id string) { +} + func NewDialogClient(log *logger.Logger) *DialogClient { return &DialogClient{ log: log, diff --git a/v2/internal/runtime/js/runtime/bridge.js b/v2/internal/runtime/js/runtime/bridge.js index 3c78b6294..f432f4c7e 100644 --- a/v2/internal/runtime/js/runtime/bridge.js +++ b/v2/internal/runtime/js/runtime/bridge.js @@ -649,6 +649,18 @@ }); } + function deleteTrayMenu(id) { + trays.update((current) => { + // Remove existing if it exists, else add + const index = current.findIndex(item => item.ID === id); + if ( index === -1 ) { + return log("ERROR: Attempted to delete tray index ") + } + current.splice(index, 1); + return current; + }); + } + let selectedMenu = writable(null); function fade(node, { delay = 0, duration = 400, easing = identity } = {}) { @@ -1666,6 +1678,11 @@ let trayLabelData = JSON.parse(updateTrayLabelJSON); updateTrayLabel(trayLabelData); break + case 'D': + // Delete Tray Menu + const id = trayMessage.slice(1); + deleteTrayMenu(id); + break default: log('Unknown tray message: ' + message.data); } diff --git a/v2/internal/runtime/js/runtime/package.json b/v2/internal/runtime/js/runtime/package.json index 929dce795..94ea92e77 100644 --- a/v2/internal/runtime/js/runtime/package.json +++ b/v2/internal/runtime/js/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@wails/runtime", - "version": "1.3.10", + "version": "1.3.12", "description": "Wails V2 Javascript runtime library", "main": "main.js", "types": "runtime.d.ts", diff --git a/v2/internal/runtime/js/runtime/src/store.js b/v2/internal/runtime/js/runtime/src/store.js index 8d8d20ce2..a0b4571b5 100644 --- a/v2/internal/runtime/js/runtime/src/store.js +++ b/v2/internal/runtime/js/runtime/src/store.js @@ -49,4 +49,16 @@ export function updateTrayLabel(tray) { }) } +export function deleteTrayMenu(id) { + trays.update((current) => { + // Remove existing if it exists, else add + const index = current.findIndex(item => item.ID === id); + if ( index === -1 ) { + return log("ERROR: Attempted to delete tray index ", id, "but it doesn't exist") + } + current.splice(index, 1); + return current; + }) +} + export let selectedMenu = writable(null); \ No newline at end of file diff --git a/v2/internal/runtime/js/runtime/src/websocket.js b/v2/internal/runtime/js/runtime/src/websocket.js index 1b1da7638..4f7384ca2 100644 --- a/v2/internal/runtime/js/runtime/src/websocket.js +++ b/v2/internal/runtime/js/runtime/src/websocket.js @@ -10,7 +10,7 @@ The lightweight framework for web-like apps /* jshint esversion: 6 */ -import {setTray, hideOverlay, showOverlay, updateTrayLabel} from "./store"; +import {setTray, hideOverlay, showOverlay, updateTrayLabel, deleteTrayMenu} from "./store"; import {log} from "./log"; let websocket = null; @@ -154,6 +154,11 @@ function handleMessage(message) { let trayLabelData = JSON.parse(updateTrayLabelJSON) updateTrayLabel(trayLabelData) break + case 'D': + // Delete Tray Menu + const id = trayMessage.slice(1); + deleteTrayMenu(id) + break default: log('Unknown tray message: ' + message.data); }