• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

u-wave / core / 19408198354

16 Nov 2025 03:56PM UTC coverage: 85.277% (-0.02%) from 85.301%
19408198354

Pull #717

github

web-flow
Merge 154a49a99 into c463a28bf
Pull Request #717: Replace i18next by Fluent

955 of 1138 branches covered (83.92%)

Branch coverage included in aggregate %.

47 of 54 new or added lines in 5 files covered. (87.04%)

2 existing lines in 1 file now uncovered.

10044 of 11760 relevant lines covered (85.41%)

96.2 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

83.61
/src/controllers/chat.js
1
import { UserNotFoundError, CannotSelfMuteError } from '../errors/index.js';
1✔
2
import toItemResponse from '../utils/toItemResponse.js';
1✔
3

1✔
4
/**
1✔
5
 * @typedef {import('../schema').UserID} UserID
1✔
6
 */
1✔
7

1✔
8
/**
1✔
9
 * @typedef {object} MuteUserParams
1✔
10
 * @prop {UserID} id
1✔
11
 * @typedef {object} MuteUserBody
1✔
12
 * @prop {number} time
1✔
13
 */
1✔
14

1✔
15
/**
1✔
16
 * @type {import('../types.js').AuthenticatedController<MuteUserParams, {}, MuteUserBody>}
1✔
17
 */
1✔
18
async function muteUser(req) {
1✔
19
  const { user: moderator } = req;
1✔
20
  const { id } = req.params;
1✔
21
  const duration = req.body.time;
1✔
22
  const { chat, users } = req.uwave;
1✔
23

1✔
24
  if (moderator.id === id) {
1!
NEW
25
    throw new CannotSelfMuteError({ unmute: false });
×
26
  }
×
27

1✔
28
  const user = await users.getUser(id);
1✔
29
  if (!user) throw new UserNotFoundError({ id });
1!
30

1✔
31
  await chat.mute(user, duration, { moderator });
1✔
32

1✔
33
  return toItemResponse({});
1✔
34
}
1✔
35

1✔
36
/**
1✔
37
 * @typedef {object} UnmuteUserParams
1✔
38
 * @prop {UserID} id
1✔
39
 */
1✔
40

1✔
41
/**
1✔
42
 * @type {import('../types.js').AuthenticatedController<UnmuteUserParams>}
1✔
43
 */
1✔
44
async function unmuteUser(req) {
×
45
  const { user: moderator } = req;
×
46
  const { id } = req.params;
×
47
  const { chat, users } = req.uwave;
×
48

×
49
  if (moderator.id === id) {
×
NEW
50
    throw new CannotSelfMuteError({ unmute: true });
×
51
  }
×
52

×
53
  const user = await users.getUser(id);
×
54
  if (!user) throw new UserNotFoundError({ id });
×
55

×
56
  await chat.unmute(user, { moderator });
×
57

×
58
  return toItemResponse({});
×
59
}
×
60

1✔
61
/**
1✔
62
 * @type {import('../types.js').AuthenticatedController}
1✔
63
 */
1✔
64
async function deleteAll(req) {
2✔
65
  const { user: moderator } = req;
2✔
66
  const { chat } = req.uwave;
2✔
67

2✔
68
  chat.delete({}, { moderator });
2✔
69

2✔
70
  return toItemResponse({});
2✔
71
}
2✔
72

1✔
73
/**
1✔
74
 * @typedef {object} DeleteByUserParams
1✔
75
 * @prop {UserID} id
1✔
76
 */
1✔
77

1✔
78
/**
1✔
79
 * @type {import('../types.js').AuthenticatedController<DeleteByUserParams>}
1✔
80
 */
1✔
81
async function deleteByUser(req) {
2✔
82
  const { user: moderator } = req;
2✔
83
  const { chat } = req.uwave;
2✔
84
  const { id } = req.params;
2✔
85

2✔
86
  chat.delete({ userID: id }, { moderator });
2✔
87

2✔
88
  return toItemResponse({});
2✔
89
}
2✔
90

1✔
91
/**
1✔
92
 * @typedef {object} DeleteMessageParams
1✔
93
 * @prop {string} id
1✔
94
 */
1✔
95

1✔
96
/**
1✔
97
 * @type {import('../types.js').AuthenticatedController<DeleteMessageParams>}
1✔
98
 */
1✔
99
async function deleteMessage(req) {
2✔
100
  const { user: moderator } = req;
2✔
101
  const { chat } = req.uwave;
2✔
102
  const { id } = req.params;
2✔
103

2✔
104
  chat.delete({ id }, { moderator });
2✔
105

2✔
106
  return toItemResponse({});
2✔
107
}
2✔
108

1✔
109
export {
1✔
110
  muteUser,
1✔
111
  unmuteUser,
1✔
112
  deleteAll,
1✔
113
  deleteByUser,
1✔
114
  deleteMessage,
1✔
115
};
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc