29 lines
940 B
Python
29 lines
940 B
Python
import re
|
|
|
|
|
|
_NON_ALNUM_PATTERN = re.compile(r"[^a-z0-9]+")
|
|
|
|
|
|
def _normalize_widget_segment(value) -> str:
|
|
cleaned = _NON_ALNUM_PATTERN.sub("-", str(value or "").strip().lower()).strip("-")
|
|
return cleaned or "none"
|
|
|
|
|
|
def compose_widget_unique(service, identifier, person_id=None) -> str:
|
|
service_key = str(service or "").strip().lower() or "signal"
|
|
identifier_value = str(identifier or "").strip()
|
|
if service_key == "whatsapp" and "@" in identifier_value:
|
|
identifier_value = identifier_value.split("@", 1)[0].strip()
|
|
return "-".join(
|
|
[
|
|
"compose-widget",
|
|
_normalize_widget_segment(service_key),
|
|
_normalize_widget_segment(identifier_value),
|
|
_normalize_widget_segment(person_id or "none"),
|
|
]
|
|
)
|
|
|
|
|
|
def compose_widget_dom_id(service, identifier, person_id=None) -> str:
|
|
return f"widget-{compose_widget_unique(service, identifier, person_id)}"
|