feat(lotus): sendNotificationType=none turns the call-start notification off (cinny #295)
CI / Build embedded bundle (pull_request) Successful in 3m55s
CI / Publish to Gitea npm registry (pull_request) Skipped

The widget intent presets default sendNotificationType to "notification",
and the URL param could only switch it to ring/notification, so the host
had no way to say "don't notify". In persistent voice channels and space
rooms that notification carries an @room mention: every member got a
highlighted ping (and phone push) whenever a moderator joined first, and
other clients showed it as a missed call.

`sendNotificationType=none` now clears it after the presets are applied.
Unit test added.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
This commit is contained in:
Lotus CI
2026-10-16 22:06:12 -04:00
co-authored by Claude Opus 5.5
parent 3b0050e8bb
commit 93905c5bc1
2 changed files with 21 additions and 0 deletions
+13
View File
@@ -305,6 +305,19 @@ describe("UrlParams", () => {
});
});
it("[lotus] sendNotificationType=none turns the preset notification off", () => {
expect(
computeUrlParams(
"?intent=start_call&widgetId=1234&parentUrl=parent.org&sendNotificationType=none",
).sendNotificationType,
).toBeUndefined();
expect(
computeUrlParams(
"?intent=start_call&widgetId=1234&parentUrl=parent.org",
).sendNotificationType,
).toBe("notification");
});
it("accepts join_existing", () => {
expect(
computeUrlParams(
+8
View File
@@ -523,6 +523,14 @@ export const computeUrlParams = (search = "", hash = ""): UrlParams => {
...properties,
...intentPreset,
...pickBy(configuration, (v?: unknown) => v !== undefined),
// [lotus] `sendNotificationType=none` turns the intent preset's
// notification off. The host passes it for persistent voice channels and
// space rooms, where a call start must not @room-ping every member
// (LotusGuild/cinny#295). pickBy above drops undefined, so it can't be
// expressed as a plain override.
...(parser.getParam("sendNotificationType") === "none"
? { sendNotificationType: undefined }
: {}),
};
};