#!/usr/bin/env python3

from pathlib import Path
import shutil
from datetime import datetime
import sys


ROOT = Path.cwd()

INTENT_UTIL = (
    ROOT
    / "packages/apps/LemenzoPhone"
    / "java/com/android/dialer/util/IntentUtil.java"
)

PHONE_INTERACTION = (
    ROOT
    / "packages/apps/LemenzoPhone"
    / "java/com/android/dialer/interactions/PhoneNumberInteraction.java"
)


def fail(msg):
    print(f"❌ {msg}")
    sys.exit(1)


def backup(path):
    stamp = datetime.now().strftime("%Y%m%d-%H%M%S")
    dst = path.with_name(path.name + f".backup-{stamp}")
    shutil.copy2(path, dst)
    print(f"Backup: {dst}")


print()
print("Lemenzo Phone -> Lemenzo Messenger integration")
print("=" * 60)


# ---------------------------------------------------------
# IntentUtil.java
# ---------------------------------------------------------

if not INTENT_UTIL.exists():
    fail(f"Mangler: {INTENT_UTIL}")

text = INTENT_UTIL.read_text(
    encoding="utf-8",
    errors="ignore"
)

original = text


# Fix possible SMS_URI_PREFIX definition.
text = text.replace(
    'SMS_URI_PREFIX = "sms:"',
    'SMS_URI_PREFIX = "smsto:"'
)


# Also convert the actual Uri.parse based route to Uri.fromParts.
text = text.replace(
    'Uri.parse(SMS_URI_PREFIX + phoneNumber)',
    'Uri.fromParts("smsto", String.valueOf(phoneNumber), null)'
)


if text != original:
    backup(INTENT_UTIL)

    INTENT_UTIL.write_text(
        text,
        encoding="utf-8"
    )

    print("✅ IntentUtil.java patched")

else:
    if 'Uri.fromParts("smsto"' in text:
        print("✅ IntentUtil.java already correct")
    else:
        print("⚠️ IntentUtil.java did not match expected pattern")


# ---------------------------------------------------------
# PhoneNumberInteraction.java
# ---------------------------------------------------------

if not PHONE_INTERACTION.exists():
    fail(f"Mangler: {PHONE_INTERACTION}")

text = PHONE_INTERACTION.read_text(
    encoding="utf-8",
    errors="ignore"
)

original = text

text = text.replace(
    'Uri.fromParts("sms", phoneNumber, null)',
    'Uri.fromParts("smsto", phoneNumber, null)'
)


if text != original:
    backup(PHONE_INTERACTION)

    PHONE_INTERACTION.write_text(
        text,
        encoding="utf-8"
    )

    print("✅ PhoneNumberInteraction.java patched")

else:
    if 'Uri.fromParts("smsto", phoneNumber, null)' in text:
        print("✅ PhoneNumberInteraction.java already correct")
    else:
        print(
            "⚠️ PhoneNumberInteraction.java "
            "did not match expected pattern"
        )


# ---------------------------------------------------------
# Verification
# ---------------------------------------------------------

intent_text = INTENT_UTIL.read_text(
    encoding="utf-8",
    errors="ignore"
)

interaction_text = PHONE_INTERACTION.read_text(
    encoding="utf-8",
    errors="ignore"
)


bad = []

if 'Uri.fromParts("sms",' in intent_text:
    bad.append("IntentUtil still contains sms")

if 'SMS_URI_PREFIX = "sms:"' in intent_text:
    bad.append("IntentUtil still contains sms: prefix")

if 'Uri.fromParts("sms",' in interaction_text:
    bad.append("PhoneNumberInteraction still contains sms")


if bad:
    print()
    print("❌ VERIFICATION FAILED")

    for item in bad:
        print(" -", item)

    sys.exit(1)


print()
print("✅ Phone -> Messenger integration complete")
print()
print("Route:")
print("Lemenzo Phone")
print("    ↓")
print("ACTION_SENDTO")
print("    ↓")
print("smsto:<number>")
print("    ↓")
print("Android ROLE_SMS")
print("    ↓")
print("Lemenzo Messenger")
