# Siklus Hidup

## MAESTROSDK.beforeRefresh(handler)

Mendaftarkan fungsi yang berjalan sebelum Cowork me-refresh tab Mini App ini, misalnya saat pengguna menekan tombol refresh. Gunakan untuk menjaga pekerjaan yang belum disimpan: bertanya, menyimpan, atau membatalkan refresh.

### Parameter

| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| `handler` | `() => boolean \| void \| Promise<boolean \| void>` | Ya | Berjalan sekali setiap refresh. Kembalikan `false` (atau promise yang selesai dengan `false`) untuk membatalkan refresh. Nilai lain membiarkannya berlanjut |

### Nilai kembalian

`() => void`: panggil untuk menghapus handler ini.

### Perilaku

- Handler berjalan satu per satu, sesuai urutan ditambahkan, dan masing-masing ditunggu.
- Handler pertama yang mengembalikan `false` membatalkan refresh. Handler yang melempar error atau reject juga membatalkannya.
- Tanpa handler, tab langsung di-refresh.
- Hanya satu refresh yang ditangani dalam satu waktu; permintaan kedua saat satu refresh sedang berjalan diabaikan.
- `handler` yang bukan fungsi diabaikan, dan fungsi yang dikembalikan tidak melakukan apa-apa.

### Contoh

```js
const off = MAESTROSDK.beforeRefresh(async () => {
  if (!form.dirty) return;
  return await MAESTROSDK.confirm({ title: 'Refresh?', message: 'Unsaved changes will be lost.' });
});
// later
off();
```

## Terkait

- [Interaksi](https://docs.micromeet.ai/id/miniapp-sdk/interaction.md): `confirm`, sering dipakai di dalam `beforeRefresh`
- [Ikhtisar](https://docs.micromeet.ai/id/miniapp-sdk/overview.md): Semua modul SDK Mini App
