Skip to content

Commit 9a0c4e3

Browse files
committed
npm run lint
1 parent 7862348 commit 9a0c4e3

File tree

22 files changed

+530
-503
lines changed

22 files changed

+530
-503
lines changed

backend/src/entities/GroupMember.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,20 @@ export class GroupMember extends BaseEntity {
4242
@Field(() => User)
4343
@ManyToOne(
4444
() => User,
45-
(user) => user.groupMember, {
45+
(user) => user.groupMember,
46+
{
4647
onDelete: "CASCADE",
47-
}
48+
},
4849
)
4950
@JoinColumn({ name: "userId" })
5051
user: User;
5152

5253
@ManyToOne(
5354
() => Group,
54-
(group) => group.groupMember, {
55+
(group) => group.groupMember,
56+
{
5557
onDelete: "CASCADE",
56-
}
58+
},
5759
)
5860
@JoinColumn({ name: "groupId" })
5961
group: Group;

backend/src/entities/Message.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ export class Message extends BaseEntity {
5353
(group) => group.messages,
5454
{
5555
onDelete: "CASCADE",
56-
})
56+
},
57+
)
5758
@Field(() => Group)
5859
group: Group;
5960
}

backend/src/resolvers/GroupResolver.ts

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ import { Message } from "../entities/Message";
1919
import User from "../entities/User";
2020
import { getVariableEnv } from "../lib/envManager/envManager";
2121
import { RoleMiddleware } from "../middleware/RoleMiddleware";
22-
import type { ContextType } from "../types/context";
2322
import { addMembersToGroup, removeMembersFromGroup } from "../services/groupMemberService";
23+
import type { ContextType } from "../types/context";
2424

2525
@InputType()
2626
class CreateGroupInput {
@@ -42,7 +42,6 @@ class CreateGroupInput {
4242
user_beneficiary?: string;
4343
}
4444

45-
4645
@InputType()
4746
class UpdateGroupInput {
4847
@Field()
@@ -62,7 +61,6 @@ class UpdateGroupInput {
6261

6362
@Field({ nullable: true })
6463
user_beneficiary?: string;
65-
6664
}
6765

6866
@InputType()
@@ -97,9 +95,13 @@ export default class GroupResolver {
9795
user: { id: ctx.user?.id },
9896
},
9997
},
100-
relations: { groupMember: {
101-
user: true, // 👈 THIS is the key
102-
}, user_admin: true, user_beneficiary: true },
98+
relations: {
99+
groupMember: {
100+
user: true, // 👈 THIS is the key
101+
},
102+
user_admin: true,
103+
user_beneficiary: true,
104+
},
103105
order: { id: "DESC" },
104106
});
105107

@@ -112,16 +114,16 @@ export default class GroupResolver {
112114

113115
@Query(() => Group)
114116
async getGroupById(@Arg("id") id: number) {
115-
const group = await Group.findOne({
117+
const group = await Group.findOne({
116118
where: { id: id },
117-
relations: {
118-
user_admin: true,
119-
user_beneficiary: true,
119+
relations: {
120+
user_admin: true,
121+
user_beneficiary: true,
120122
groupMember: {
121123
user: true,
122124
},
123125
},
124-
});
126+
});
125127
if (!group) throw new Error("Groupe non trouvé");
126128
return group;
127129
}
@@ -224,41 +226,36 @@ export default class GroupResolver {
224226
if (data.users?.length) {
225227
await addMembersToGroup({
226228
userEmails: data.users,
227-
groupId: group.id
229+
groupId: group.id,
228230
});
229231
}
230-
232+
231233
return group;
232234
}
233235

234236
@UseMiddleware(RoleMiddleware())
235237
@Mutation(() => String)
236-
async deleteGroup(
237-
@Arg("id") id: number,
238-
@Ctx() ctx: ContextType
239-
): Promise<string> {
238+
async deleteGroup(@Arg("id") id: number, @Ctx() ctx: ContextType): Promise<string> {
240239
if (!ctx.user) {
241240
throw new Error("Utilisateur non connecté");
242241
}
243-
242+
244243
const group = await Group.findOne({
245244
where: {
246245
id,
247246
user_admin: { id: ctx.user.id },
248247
},
249248
relations: { user_admin: true },
250249
});
251-
250+
252251
if (!group) {
253252
throw new Error("Groupe introuvable ou accès refusé");
254253
}
255-
254+
256255
if (!group.user_admin || group.user_admin.id !== ctx.user.id) {
257-
throw new Error(
258-
"Il faut être administrateur du groupe pour pouvoir le supprimer"
259-
);
256+
throw new Error("Il faut être administrateur du groupe pour pouvoir le supprimer");
260257
}
261-
258+
262259
try {
263260
await Group.remove(group);
264261
return "Le groupe a été supprimé";
@@ -273,7 +270,7 @@ export default class GroupResolver {
273270
async removeMembersFromGroup(
274271
@Arg("groupId", () => Number) groupId: number,
275272
@Arg("data") data: RemoveMembersInput,
276-
@Ctx() ctx: ContextType
273+
@Ctx() ctx: ContextType,
277274
): Promise<string> {
278275
if (!ctx.user) {
279276
throw new Error("Utilisateur non connecté");
@@ -286,7 +283,7 @@ export default class GroupResolver {
286283

287284
const group = await Group.findOne({
288285
where: {
289-
id: groupId
286+
id: groupId,
290287
},
291288
relations: { user_admin: true },
292289
});
@@ -300,15 +297,15 @@ export default class GroupResolver {
300297

301298
// Convert emails to user IDs if provided
302299
let userIdsToRemove: number[] = [];
303-
300+
304301
if (data.userEmails && data.userEmails.length > 0) {
305302
await Promise.all(
306303
data.userEmails.map(async (email) => {
307304
const user = await User.findOne({ where: { email } });
308305
if (user) {
309306
userIdsToRemove.push(user.id);
310307
}
311-
})
308+
}),
312309
);
313310
}
314311

backend/src/services/groupMemberService.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export async function addMembersToGroup({ userEmails, groupId }: AddMembersInput
2222
await Promise.all(
2323
userEmails.map(async (userEmail) => {
2424
const userToAdd = await User.findOne({ where: { email: userEmail } });
25-
const userPending = await PendingInvitation.findOne({where: {userEmail : userEmail}})
25+
const userPending = await PendingInvitation.findOne({ where: { userEmail: userEmail } });
2626
if (!userToAdd && !userPending) {
2727
// if the user does not exist in the db, add it to the pendinginvitationList
2828
const pendingInvitation = PendingInvitation.create({
@@ -42,8 +42,6 @@ export async function addMembersToGroup({ userEmails, groupId }: AddMembersInput
4242
await groupMember.save();
4343
}),
4444
);
45-
46-
4745
}
4846

4947
export async function removeMembersFromGroup({ userIds, groupId }: RemoveMembersInput) {
@@ -52,8 +50,8 @@ export async function removeMembersFromGroup({ userIds, groupId }: RemoveMembers
5250
// Remove all group members
5351
await Promise.all(
5452
userIds.map(async (userId) => {
55-
const groupMember = await GroupMember.findOne({
56-
where: { userId: userId, groupId: groupId }
53+
const groupMember = await GroupMember.findOne({
54+
where: { userId: userId, groupId: groupId },
5755
});
5856

5957
if (!groupMember) return;
@@ -64,6 +62,6 @@ export async function removeMembersFromGroup({ userIds, groupId }: RemoveMembers
6462
console.error("removeMembersFromGroup error:", err);
6563
throw new Error("Une erreur est survenue lors de la suppression de l'utilisateur du groupe");
6664
}
67-
})
65+
}),
6866
);
6967
}

frontend/src/components/forms/groups/GroupForm.tsx

Lines changed: 76 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -11,95 +11,95 @@ type GroupFormProps = {
1111
/** When provided, the form works in edit mode and pre-populates with the group data */
1212
groupId?: number;
1313
formData: any;
14-
errors:any
14+
errors: any;
1515
isEdit: boolean;
1616
handleChange: any;
1717
checked: boolean;
1818
setChecked: any;
1919
isAdmin: boolean;
2020
};
2121

22-
23-
export default function GroupForm({ formData, errors, checked, setChecked, isEdit, handleChange, isAdmin }: GroupFormProps) {
22+
export default function GroupForm({
23+
formData,
24+
errors,
25+
checked,
26+
setChecked,
27+
isEdit,
28+
handleChange,
29+
isAdmin,
30+
}: GroupFormProps) {
2431
const disabled = isEdit && !isAdmin;
2532

2633
return (
27-
<>
28-
<Subtitle className="text-center text-2xl">
29-
{isEdit ? "Modifier le groupe" : "Créer un groupe"}
30-
</Subtitle>
31-
<div className="text-white text-8xl m-auto">
32-
<Icon icon="image" />
33-
</div>
34-
<div className="flex flex-col gap-4 px-20">
35-
<Input
36-
disabled={disabled}
37-
name="name"
38-
type="text"
39-
value={formData.name}
40-
onChange={handleChange}
41-
placeholder="Entrez le nom du groupe"
42-
error={errors.name}
43-
icon="doubleChat"
44-
/>
34+
<>
35+
<Subtitle className="text-center text-2xl">
36+
{isEdit ? "Modifier le groupe" : "Créer un groupe"}
37+
</Subtitle>
38+
<div className="text-white text-8xl m-auto">
39+
<Icon icon="image" />
40+
</div>
41+
<div className="flex flex-col gap-4 px-20">
42+
<Input
43+
disabled={disabled}
44+
name="name"
45+
type="text"
46+
value={formData.name}
47+
onChange={handleChange}
48+
placeholder="Entrez le nom du groupe"
49+
error={errors.name}
50+
icon="doubleChat"
51+
/>
4552

46-
<SearchSelectInput
47-
disabled={disabled}
48-
name="event_type"
49-
value={formData.event_type}
50-
onChange={(val) =>
51-
handleChange({
52-
target: { name: "event_type", value: val },
53-
} as React.ChangeEvent<HTMLInputElement>)
54-
}
55-
placeholder="Quel est l'événement ?"
56-
error={errors.event_type}
57-
icon="gift"
58-
options={options}
59-
theme="light"
60-
/>
53+
<SearchSelectInput
54+
disabled={disabled}
55+
name="event_type"
56+
value={formData.event_type}
57+
onChange={(val) =>
58+
handleChange({
59+
target: { name: "event_type", value: val },
60+
} as React.ChangeEvent<HTMLInputElement>)
61+
}
62+
placeholder="Quel est l'événement ?"
63+
error={errors.event_type}
64+
icon="gift"
65+
options={options}
66+
theme="light"
67+
/>
6168

62-
<Input
63-
disabled={disabled}
64-
name="piggy_bank"
65-
type="number"
66-
value={String(formData.piggy_bank)}
67-
onChange={handleChange}
68-
placeholder={String(0)}
69-
error={errors.piggy_bank}
70-
icon="dollar"
71-
/>
69+
<Input
70+
disabled={disabled}
71+
name="piggy_bank"
72+
type="number"
73+
value={String(formData.piggy_bank)}
74+
onChange={handleChange}
75+
placeholder={String(0)}
76+
error={errors.piggy_bank}
77+
icon="dollar"
78+
/>
7279

73-
<InputWithToggle
74-
disabled={disabled}
75-
checked={checked}
76-
onCheckedChange={() => {
77-
setChecked(!checked);
78-
}}
79-
name="user_beneficiary"
80-
value={formData.user_beneficiary ?? ""}
81-
onChange={handleChange}
82-
label="Le nom du destinataire"
83-
question="Voulez-vous ajouter un destinataire? "
84-
error={errors.user_beneficiary}
85-
/>
80+
<InputWithToggle
81+
disabled={disabled}
82+
checked={checked}
83+
onCheckedChange={() => {
84+
setChecked(!checked);
85+
}}
86+
name="user_beneficiary"
87+
value={formData.user_beneficiary ?? ""}
88+
onChange={handleChange}
89+
label="Le nom du destinataire"
90+
question="Voulez-vous ajouter un destinataire? "
91+
error={errors.user_beneficiary}
92+
/>
8693

87-
<Input
88-
disabled={disabled}
89-
name="deadline"
90-
type="date"
91-
value={formData.deadline}
92-
onChange={handleChange}
93-
error={errors.deadline}
94-
/>
95-
</div>
96-
97-
98-
99-
100-
101-
</>
102-
94+
<Input
95+
disabled={disabled}
96+
name="deadline"
97+
type="date"
98+
value={formData.deadline}
99+
onChange={handleChange}
100+
error={errors.deadline}
101+
/>
102+
</div>
103+
</>
103104
);
104105
}
105-

0 commit comments

Comments
 (0)