@@ -102,7 +127,7 @@ export default function ProfilePage() {
{/* TODO: hent ekte tall fra backend */}
-
+
{[
{ count: myRecipes.length, label: 'mine oppskrifter' },
{ count: favorites.length, label: 'favoritter' },
@@ -110,7 +135,7 @@ export default function ProfilePage() {
{ count: 0, label: 'delt med deg' },
].map((stat) => (
-
-
+
{stat.count}
{stat.label}
@@ -123,7 +148,7 @@ export default function ProfilePage() {
trigger={
@@ -132,7 +157,7 @@ export default function ProfilePage() {
@@ -228,14 +253,71 @@ export default function ProfilePage() {
))}
+ {/* søppelbøtte som slår på valg av egne oppskrifter */}
+ {desktopTab === 'shared' && myRecipes.length > 0 && (
+
+ {isSelecting && (
+ <>
+
+ {selectedIds.length} valgt
+
+
+ selectedIds.includes(recipe.id),
+ )}
+ onDeleted={toggleSelecting}
+ />
+ >
+ )}
+
+
+ )}
+
{tabRecipes.length > 0 ? (
-
+
{tabRecipes.map((recipe) => (
-
-
-
-
+ {isSelecting ? (
+ // dekker kortet så trykk velger i stedet for å åpne oppskriften
+
+ ) : (
+
+
+
+ )}
))}
diff --git a/server/src/schema/resolvers/user.ts b/server/src/schema/resolvers/user.ts
index 14117aa..0fb6e5b 100644
--- a/server/src/schema/resolvers/user.ts
+++ b/server/src/schema/resolvers/user.ts
@@ -264,9 +264,36 @@ export const userResolvers = {
where: { id: context.userId },
data: { passwordHash },
});
-
return true;
},
+ // sletter oppskriftene bare hvis brukeren er forfatteren
+ deleteMyRecipes: async (
+ _: unknown,
+ args: { ids: string[] },
+ context: Context,
+ ) => {
+ if (!context.userId) {
+ throw new GraphQLError('Du må være logget inn.', {
+ extensions: { code: 'UNAUTHENTICATED' },
+ });
+ }
+
+ // sletter ingenting hvis forfatter er en annen
+ const result = await prisma.recipe.deleteMany({
+ where: { id: { in: args.ids }, authorId: context.userId },
+ });
+
+ if (result.count === 0) {
+ throw new GraphQLError(
+ 'Fant ikke oppskriften eller så eier du den ikke.',
+ {
+ extensions: { code: 'FORBIDDEN' },
+ },
+ );
+ }
+
+ return result.count;
+ },
},
User: {
diff --git a/server/src/schema/typeDefs/user.graphql b/server/src/schema/typeDefs/user.graphql
index 3cf43af..96cde7e 100644
--- a/server/src/schema/typeDefs/user.graphql
+++ b/server/src/schema/typeDefs/user.graphql
@@ -32,4 +32,6 @@ extend type Mutation {
changePassword(currentPassword: String!, newPassword: String!): Boolean!
# legger til eller fjerner en favoritt
toggleFavorite(recipeId: ID!): Boolean!
+ # sletter en oppskrift brukeren selv har laget
+ deleteMyRecipes(ids: [ID!]!): Int!
}