package com.labfytools.trainlog.data import android.app.Activity import android.content.Intent import android.os.Bundle import android.widget.Button import android.widget.LinearLayout import android.widget.TextView /** Minimal non-migrating bridge UI; it intentionally exposes backup/restore only. */ class BackupBridgeActivity : Activity() { private lateinit var repository: TrainlogRepository private lateinit var status: TextView private val service by lazy { AndroidBackupService(applicationContext) } override fun onCreate(state: Bundle?) { super.onCreate(state); repository = TrainlogRepository(applicationContext) status = TextView(this).apply { text = "Plaintext local backup. Keep the exported file private." } val backup = Button(this).apply { text = "Create complete backup"; setOnClickListener { startActivityForResult(Intent(Intent.ACTION_CREATE_DOCUMENT).setType("application/zip") .putExtra(Intent.EXTRA_TITLE, "trainlog-backup.tlbackup").addCategory(Intent.CATEGORY_OPENABLE), 1) } } val restore = Button(this).apply { text = "Verify and restore backup"; setOnClickListener { startActivityForResult(Intent(Intent.ACTION_OPEN_DOCUMENT).setType("application/zip") .addCategory(Intent.CATEGORY_OPENABLE), 2) } } setContentView(LinearLayout(this).apply { orientation = LinearLayout.VERTICAL; addView(status); addView(backup); addView(restore) }) } override fun onActivityResult(request: Int, result: Int, data: Intent?) { super.onActivityResult(request, result, data); if (result != RESULT_OK || data?.data == null) return if (request == 1) contentResolver.openOutputStream(data.data!!, "w")!!.use { status.text = service.create(repository, it).toString() } else if (request == 2) contentResolver.openInputStream(data.data!!)!!.use { val verified = service.verify(it).getOrElse { error -> status.text = error.message; return } status.text = service.restore(repository, verified).toString() recreate() } } override fun onDestroy() { repository.close(); super.onDestroy() } }