baseimage-tutorial-framework/tfw/components/frontend/frontend_handler.py

44 lines
1.3 KiB
Python
Raw Normal View History

from tfw.internals.networking import Scope
2019-05-26 16:26:33 +00:00
from .message_storage import FrontendMessageStorage
2019-06-27 12:36:18 +00:00
class FrontendHandler:
2019-08-08 13:05:37 +00:00
# keys = [
# 'console.read',
# 'console.write',
# 'console.showLiveLogs',
# 'console.rewriteContentWithProcessLogsOnDeploy',
# 'dashboard.layout',
# 'dashboard.hideMessages',
# 'dashboard.terminalMenuItem',
# 'dashboard.reloadFrontend',
# 'dashboard.reloadIframe',
# 'message.config',
# 'message.queue',
# 'message.send'
# ]
keys = ['console', 'dashboard', 'message', 'ide.read', 'recover']
2019-05-26 16:26:33 +00:00
def __init__(self):
self.connector = None
2019-08-08 13:05:37 +00:00
self._frontend_message_storage = FrontendMessageStorage()
2019-05-26 16:26:33 +00:00
def send_message(self, message):
self.connector.send_message(message, scope=Scope.WEBSOCKET)
def handle_event(self, message, _):
2019-05-26 16:26:33 +00:00
self._frontend_message_storage.save_message(message)
if message['key'] == 'recover':
self.recover_frontend()
2019-08-08 13:05:37 +00:00
if self._filter_message(message):
self.send_message(message)
@staticmethod
def _filter_message(message):
return not message['key'].startswith('ide')
2019-05-26 16:26:33 +00:00
def recover_frontend(self):
for message in self._frontend_message_storage.messages:
self.send_message(message)