# HG changeset patch # User Goffi # Date 1688638327 -7200 # Node ID 383e1fee29f6e5ac136dbb9767ef7d6a31f6cb13 # Parent 7f3f5ae7d65a31b825f527bdb93e0b175e24797e browser (chat/select): update dynamically JID items when search box is used diff -r 7f3f5ae7d65a -r 383e1fee29f6 libervia/web/pages/chat/select/_browser/__init__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libervia/web/pages/chat/select/_browser/__init__.py Thu Jul 06 12:12:07 2023 +0200 @@ -0,0 +1,51 @@ +from bridge import AsyncBridge as Bridge +from browser import aio, bind, console as log, document, window +from urllib.parse import urljoin, quote +from jid_search import JidSearch +from template import Template +from cache import cache +from pprint import pp + +log.warning = log.warn +profile = window.profile or "" +bridge = Bridge() + + +class ChatSelect: + + def __init__(self): + self.search_item_tpl = Template("chat/search_item.html") + self.chat_items_elt = document["chat_items"] + + def show_items(self, items) -> None: + for item in items: + search_item_elt = self.search_item_tpl.get_elt({ + "url": urljoin(f"{window.location.href}/", quote(item["entity"])), + "item": item, + "identities": cache.identities + }) + self.chat_items_elt <= search_item_elt + + def on_empty_search(self): + items = [ + { + "entity": jid_, + "groups": data["groups"] + } + for jid_, data in cache.roster.items() + ] + self.chat_items_elt.clear() + self.show_items(items) + + def on_search_filter(self, search_items): + self.chat_items_elt.clear() + pp(search_items) + self.show_items(search_items) + + +chat_select = ChatSelect() +jid_search = JidSearch( + document["search"], + chat_select.on_search_filter, + chat_select.on_empty_search +)