All files / packages/mutations/src/peers add.ts

88.88% Statements 16/18
50% Branches 2/4
92.85% Functions 13/14
86.66% Lines 13/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73              142x       2x 2x   2x                 2x     2x                             2x       3x       3x         1x       1x         1x       1x          
import {
	invalidateSuggest as invalidateSuggestPeers,
	update as updatePeers,
} from "../cache/peers";
import { update as updateUserConnections } from "../cache/user-connection-intentions";
import type { UseContextedMutationOptions } from "../context";
 
export const options: UseContextedMutationOptions<"peers.add"> = {
	mutationKey: "peers.add",
	onSuccess:
		(controllerContext) =>
		({ id, connection }, variables) => {
			updatePeers(controllerContext, {
				get: (controller) => {
					controller.add({
						id,
						name: variables.name,
						publicName: undefined,
						connectedUser: undefined,
					});
				},
				getForeign: undefined,
				getPaged: (controller) => {
					void controller.invalidate();
				},
			});
			Iif (connection && !connection.connected) {
				updateUserConnections(controllerContext, {
					getAll: (controller) =>
						controller.outbound.add({
							user: {
								id: connection.user.id,
								email: connection.user.email,
							},
							peer: {
								id,
								name: variables.name,
							},
						}),
				});
			}
			void invalidateSuggestPeers(controllerContext);
		},
	mutateToastOptions:
		({ t }) =>
		(variablesSet) => ({
			text: t("toasts.addPeer.mutate", {
				ns: "peers",
				peersAmount: variablesSet.length,
				peers: variablesSet.map((variables) => `"${variables.name}"`),
			}),
		}),
	successToastOptions:
		({ t }) =>
		(_resultSet, variablesSet) => ({
			text: t("toasts.addPeer.success", {
				ns: "peers",
				peersAmount: variablesSet.length,
				peers: variablesSet.map((variables) => `"${variables.name}"`),
			}),
		}),
	errorToastOptions:
		({ t }) =>
		(errors, variablesSet) => ({
			text: t("toasts.addPeer.error", {
				ns: "peers",
				peersAmount: variablesSet.length,
				peers: variablesSet.map((variables) => `"${variables.name}"`),
				errors,
			}),
		}),
};