"""Делает текст в описании аниме копируемым

"selectable_text": {
  "enabled": true
}
"""

__author__ = "wowlikon <wowlikon@gmail.com>"
__version__ = "1.0.0"
from typing import Any, Dict

from lxml import etree
from pydantic import Field

from utils.config import PatchTemplate


class Patch(PatchTemplate):
    priority: int = Field(frozen=True, exclude=True, default=0)

    def apply(self, base: Dict[str, Any]) -> bool:
        file_path = "./decompiled/res/layout/release_info.xml"

        parser = etree.XMLParser(remove_blank_text=True)
        tree = etree.parse(file_path, parser)
        root = tree.getroot()

        # Список тегов, к которым нужно добавить атрибут
        tags = ["TextView", "at.blogc.android.views.ExpandableTextView"]

        for tag in tags:
            for element in root.findall(f".//{tag}", namespaces=base["xml_ns"]):
                # Проверяем, нет ли уже атрибута
                if (
                    f"{{{base['xml_ns']['android']}}}textIsSelectable"
                    not in element.attrib
                ):
                    element.set(
                        f"{{{base['xml_ns']['android']}}}textIsSelectable", "true"
                    )

        # Сохраняем
        tree.write(file_path, encoding="utf-8", xml_declaration=True, pretty_print=True)

        return True
