@suphark/notify 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/dist/{chunk-CWZP54ZN.js → chunk-SBQOHUW4.js} +431 -401
- package/dist/{chunk-NNMV7FZ3.js → chunk-WXINJXF4.js} +7 -1
- package/dist/index.d.ts +98 -57
- package/dist/index.js +54 -2
- package/dist/next.js +2 -2
- package/dist/{notify-D-PhiDzT.d.ts → notify-DA7BsQBD.d.ts} +27 -4
- package/dist/template.d.ts +6 -1
- package/dist/template.js +3 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -169,6 +169,27 @@ const { url, code } = await createLink(user); // รับ use
|
|
|
169
169
|
const { linked, label, manageUrl } = await getChannelStatus(user, "telegram");
|
|
170
170
|
```
|
|
171
171
|
|
|
172
|
+
### ผูก Telegram/LINE จากหน้าตั้งค่าของแอป: `createChatLinkHandlers` (0.11.0)
|
|
173
|
+
|
|
174
|
+
คู่กับ `<ChatLinkRow />` ของ `@suphark/ui/pwa` (แบบเดียวกับ `createPushHandlers` + `WebPushRow`) — แอปเขียนแค่ server actions บาง ๆ:
|
|
175
|
+
|
|
176
|
+
```ts
|
|
177
|
+
"use server";
|
|
178
|
+
import { createChatLinkHandlers } from "@suphark/notify";
|
|
179
|
+
|
|
180
|
+
const chat = createChatLinkHandlers({ getUser: async () => (await auth())?.user }); // { email, id? } จาก session ฝั่ง server
|
|
181
|
+
export async function chatStatus(c: "telegram" | "line") { return chat.getStatus(c); } // { linked, paused?, label, linkedAt, manageUrl }
|
|
182
|
+
export async function chatCreateLink(c: "telegram" | "line") { return chat.createLink(c); } // { url, code, expiresAt, botName?, command }
|
|
183
|
+
export async function chatUnlink(c: "telegram" | "line") { return chat.unlink(c); } // { paused }
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
- `unlink` = **พักไว้** ไม่ลบ — การผูกใช้ร่วมทุกแอป จึงหยุดรับจากทุกแอป ผู้ใช้กดผูกใหม่ (หรือเปิดที่หน้า ช่องทางของฉัน) เพื่อรับคืน
|
|
187
|
+
- อีเมลมาจาก `getUser` ฝั่ง server เสมอ ไม่รับจาก client · ไม่ล็อกอิน = `MailError` auth
|
|
188
|
+
|
|
189
|
+
### ลิงก์ relative ใน notify (0.11.0)
|
|
190
|
+
|
|
191
|
+
`notify({ …, link: "/memo/12" })` — SDK เติมโดเมนจาก `APP_URL` / `NEXT_PUBLIC_APP_URL` (หรือ `opts.appUrl`) ให้ก่อนส่ง เพราะลิงก์ถูกเปิดจาก Telegram/LINE/อีเมล ไม่มีโดเมน = `MailError` invalid
|
|
192
|
+
|
|
172
193
|
### LINE (0.7.0)
|
|
173
194
|
|
|
174
195
|
ใช้เหมือน Telegram ทุกอย่าง — ผู้รับผูก LINE ของตัวเองครั้งเดียว (ที่ `/me` ของ hub หรือปุ่มในแอป) แล้วส่งด้วยอีเมล:
|
|
@@ -503,6 +524,9 @@ Pi Notify มี contract test (`apps/notify/src/test/contract/`) เก็บ b
|
|
|
503
524
|
|
|
504
525
|
## Changelog
|
|
505
526
|
|
|
527
|
+
- 0.11.0 — `createChatLinkHandlers` (getStatus / createLink / unlink=พักไว้) คู่ `ChatLinkRow` · `pauseChannel()` · `createLink()` คืน `botName` · `ChannelStatus.paused` · ลิงก์ relative ใน notify/notifyTopic เติมโดเมนจาก `APP_URL`/`NEXT_PUBLIC_APP_URL` (`absoluteLink`) — ต้องใช้ Pi Notify 2026-11-12+
|
|
528
|
+
- 0.10.2 — ข้อความสำรองของเทมเพลตไม่ส่งเมื่อ hub ตอบไม่ทันเวลา (ไม่รู้ผล — กันอีเมลล็อกอินซ้ำ) · `RequestStatus.status` เพิ่ม `"skipped"` (ไม่มีรายการไหนถูกส่ง) · text part ของเทมเพลต HTML เต็มฉบับไม่มี CSS/title ปน (`htmlToText`)
|
|
529
|
+
- 0.10.1 — ข้อความสำรองของเทมเพลต `auth.*` ใช้ชื่อผู้ส่ง (`from` / `MAIL_FROM`) เป็นชื่อแอปในหัวเรื่องเมื่อแอปไม่ได้ส่ง `appName` (เดิมหัวเรื่องไม่มีชื่อแอป)
|
|
506
530
|
- 0.10.0 — **อีเมลล็อกอินมาตรฐาน + ข้อความสำรอง** (เพิ่มอย่างเดียว; ต้องใช้ Pi Notify 2026-11-11+)
|
|
507
531
|
- เทมเพลตมาตรฐาน `auth.magic-link` / `auth.reset-password` / `auth.verify-email` ใช้ได้ทุกแอปโดยไม่ต้องสร้าง (สร้างชื่อเดียวกันเพื่อปรับ)
|
|
508
532
|
- ติดต่อ hub ไม่ได้ → ส่งข้อความพื้นฐานผ่าน provider ในเครื่อง (`SendResult.fallback`, event `"fallback"`) · `Message.fallback` สำหรับเทมเพลตของแอปเอง
|