Ada Eklentileri
Kavramlar

Yaşam döngüsü

Eklentin ne zaman başlar, update ne zaman çalışır, görünüm adaya nasıl gider.

Bir eklenti, betiğin en üst seviyesinde bir kez AdanotchKit.activity({...}) çağırarak kendini kaydeder. Adanotch ardından şu sırayı izler:

  1. Betik yüklenir; üst seviyedeki kod çalışır.
  2. setup(ctx) bir kez çalışır.
  3. İlk update(ctx) çalışır ve görünüm adaya gider.
  4. Sonrasında update her refresh aralığında, her eylemden, her ayar değişiminden ve her ctx.refresh() çağrısından sonra yeniden çalışır.
AdanotchKit.activity<Settings>({
  async setup(ctx) {
    // Bir kez: olaylara abone ol, zamanlayıcı kur, ilk veriyi hazırla.
  },
  async update(ctx) {
    // Görünümü döndür.
    return { compact: { trailing: AdanotchKit.ui.text("42") } };
  },
  async onAction(action, ctx, value) {
    // Bir düğme, anahtar, kaydırıcı, metin alanı ya da liste satırı kullanıldı.
  },
  async onSettingsChange(ctx) {
    // Kullanıcı Ayarlar'da bir değeri değiştirdi; ctx.settings zaten yeni değerleri taşıyor.
  },
});

Kancalar

Alan

Tür

update ne zaman çalışır

TetikleyiciNot
refresh aralığımanifest.json'daki refresh ("5s", "10m", "1h"); verilmezse 5 sn. "manual" otomatik çalıştırmaz.
onAction sonrasıEylem hata fırlatırsa update çalışmaz.
onSettingsChange sonrasıKullanıcı Ayarlar'da bir değeri değiştirdiğinde.
ctx.refresh()Olaylardan ve zamanlayıcılardan görünümü tazelemek için.

Üst üste binen çalışmalar birleşir

Bir update sürerken gelen yeni istekler sıraya girmez; o update bittiğinde bir kez daha çalışır. Yavaş bir fetch sırasında on kez ctx.refresh() çağırmak on istek değil, bir sonraki tur demektir.

Görünümü parça parça değiştirmek: ctx.render

update dönene kadar beklemek istemediğinde (ör. bir zamanlayıcıdan her saniye) ctx.render kullan. Verdiğin anahtarlar değişir, null verdiğin kaldırılır, vermediğin olduğu gibi kalır:

// Yalnız kompakt alanı değiştir; açık kart olduğu gibi kalır.
ctx.render({ compact: { trailing: ui.text("Yükleniyor…", { tone: "secondary" }) } });

// Kartı kaldır.
ctx.render({ expanded: null });

Aynı tur içindeki birden fazla render tek mesajda gider. update içinde render çağırıp hiçbir şey döndürmemek de geçerlidir.

Durum nerede yaşar

  • Modül değişkenleri (const history: number[] = []) eklenti süreci yaşadığı sürece kalır. Adanotch yeniden başlarsa, eklenti güncellenirse ya da bir sınır aşılıp süreç yeniden başlatılırsa sıfırlanır.
  • ctx.storage diske yazılır ve yeniden başlatmalardan sonra da durur. Depolama ve ayarlar

Hatalar

  • update hata fırlatırsa son görünüm kalır; hata Ayarlar › Eklentiler'de ve adanotch dev çıktısında kaynak satırıyla görünür.
  • Bir olay işleyicisinde ya da zamanlayıcıda yakalanmamış hata günlüğe yazılır, eklentiyi durdurmaz.
  • setup ya da yükleme hatası eklentiyi hemen durdurur.
  • Üst üste üç update hatası ya da süreç sınırı aşımı eklentiyi kapatır. Ayrıntılar: Sınırlar.

Bu sayfada