"""Modul penyimpanan daftar tugas ke berkas JSON."""

import json
import os


def simpan_tugas(daftar_tugas, nama_file):
    with open(nama_file, "w", encoding="utf-8") as berkas:
        json.dump(daftar_tugas, berkas, ensure_ascii=False, indent=2)


def muat_tugas(nama_file):
    try:
        with open(nama_file, "r", encoding="utf-8") as berkas:
            data = json.load(berkas)
    except FileNotFoundError:
        return []
    except json.JSONDecodeError:
        print(f"Berkas {nama_file} tidak berisi JSON yang valid.")
        os.replace(nama_file, nama_file + ".bak")
        print(f"Berkas yang rusak dipindah ke {nama_file}.bak.")
        print("Program memulai dengan daftar tugas kosong.")
        return []

    if not isinstance(data, list):
        print(f"Isi {nama_file} tidak berupa daftar tugas.")
        return []

    daftar_sah = []
    for item in data:
        if not isinstance(item, dict):
            continue
        if not isinstance(item.get("id"), int) or isinstance(item.get("id"), bool):
            continue
        if not isinstance(item.get("judul"), str):
            continue
        if not isinstance(item.get("selesai"), bool):
            continue
        daftar_sah.append(item)

    return daftar_sah
