From bd15f4a15fd518821449f78cd75a2c1d42ff9e82 Mon Sep 17 00:00:00 2001 From: csawatzky Date: Wed, 1 Apr 2026 15:07:06 -0600 Subject: [PATCH] added the checkbox in the task settings when creating a task as an object through keys and types to share the task to the team or user automatically when it is created --- src/tasks/TaskSettings.tsx | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/src/tasks/TaskSettings.tsx b/src/tasks/TaskSettings.tsx index dcc6b91..c2b92ee 100644 --- a/src/tasks/TaskSettings.tsx +++ b/src/tasks/TaskSettings.tsx @@ -2,10 +2,12 @@ import { Avatar, Box, Button, + Checkbox, Dialog, DialogActions, DialogContent, DialogTitle, + FormControlLabel, Grid2 as Grid, InputAdornment, MenuItem, @@ -15,9 +17,9 @@ import moment from "moment"; import React, { useState } from "react"; import { pond } from "protobuf-ts/pond"; import { useGlobalState, useTaskAPI } from "providers"; -import { useSnackbar, useUserAPI } from "hooks"; +import { usePermissionAPI, useSnackbar, useUserAPI } from "hooks"; import { useEffect } from "react"; -import { Task, teamScope, User } from "models"; +import { Task, teamScope, User, userScope } from "models"; import ColourPicker from "common/ColourPicker"; import ResponsiveDialog from "common/ResponsiveDialog"; @@ -46,13 +48,15 @@ export default function TaskSettings(props: Props) { const [worker, setWorker] = useState(user.id()); const [colour, setColour] = useState(""); const taskAPI = useTaskAPI(); + const userAPI = useUserAPI(); + const permissionAPI = usePermissionAPI(); const { openSnack } = useSnackbar(); const [cost, setCost] = useState(""); const [secondaryCost, setSecondaryCost] = useState(""); const [seedCost, setSeedCost] = useState(""); const [poundPerAcre, setPoundPerAcre] = useState(0); - const userAPI = useUserAPI(); const [users, setUsers] = useState([]); + const [shareToCreator, setShareToCreator] = useState(true) useEffect(() => { if (props.task) { @@ -123,6 +127,22 @@ export default function TaskSettings(props: Props) { taskAPI .addTask(taskSettings, as, props.keys, props.types) .then(resp => { + console.log(resp) + if(shareToCreator && resp.data.task){ + let parentScope = userScope(user.id()) + if(as){ + parentScope = teamScope(as) + } + + permissionAPI.shareObjectByKey( + {key: resp.data.task, kind: "task"}, + parentScope.key, + parentScope.kind, + [pond.Permission.PERMISSION_READ, pond.Permission.PERMISSION_WRITE, pond.Permission.PERMISSION_USERS, pond.Permission.PERMISSION_SHARE], + props.keys, + props.types + ) + } props.onClose(true); }) .catch(err => { @@ -319,6 +339,18 @@ export default function TaskSettings(props: Props) { value={endTime} onChange={e => setEndTime(e.target.value)} /> + {props.keys && props.types && !props.task && + setShareToCreator(e.target.checked)} + color="primary" + /> + } + label={"Share task with " + (as ? "team" : "user")} + /> + } Colour setColour(color)} />