comparison libervia/web/pages/chat/select/_browser/__init__.py @ 1547:383e1fee29f6

browser (chat/select): update dynamically JID items when search box is used
author Goffi <goffi@goffi.org>
date Thu, 06 Jul 2023 12:12:07 +0200
parents
children 66aa6e140ebb
comparison
equal deleted inserted replaced
1546:7f3f5ae7d65a 1547:383e1fee29f6
1 from bridge import AsyncBridge as Bridge
2 from browser import aio, bind, console as log, document, window
3 from urllib.parse import urljoin, quote
4 from jid_search import JidSearch
5 from template import Template
6 from cache import cache
7 from pprint import pp
8
9 log.warning = log.warn
10 profile = window.profile or ""
11 bridge = Bridge()
12
13
14 class ChatSelect:
15
16 def __init__(self):
17 self.search_item_tpl = Template("chat/search_item.html")
18 self.chat_items_elt = document["chat_items"]
19
20 def show_items(self, items) -> None:
21 for item in items:
22 search_item_elt = self.search_item_tpl.get_elt({
23 "url": urljoin(f"{window.location.href}/", quote(item["entity"])),
24 "item": item,
25 "identities": cache.identities
26 })
27 self.chat_items_elt <= search_item_elt
28
29 def on_empty_search(self):
30 items = [
31 {
32 "entity": jid_,
33 "groups": data["groups"]
34 }
35 for jid_, data in cache.roster.items()
36 ]
37 self.chat_items_elt.clear()
38 self.show_items(items)
39
40 def on_search_filter(self, search_items):
41 self.chat_items_elt.clear()
42 pp(search_items)
43 self.show_items(search_items)
44
45
46 chat_select = ChatSelect()
47 jid_search = JidSearch(
48 document["search"],
49 chat_select.on_search_filter,
50 chat_select.on_empty_search
51 )