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

This commit is contained in:
csawatzky 2026-04-01 15:07:06 -06:00
parent 324ce7807f
commit bd15f4a15f

View file

@ -2,10 +2,12 @@ import {
Avatar, Avatar,
Box, Box,
Button, Button,
Checkbox,
Dialog, Dialog,
DialogActions, DialogActions,
DialogContent, DialogContent,
DialogTitle, DialogTitle,
FormControlLabel,
Grid2 as Grid, Grid2 as Grid,
InputAdornment, InputAdornment,
MenuItem, MenuItem,
@ -15,9 +17,9 @@ import moment from "moment";
import React, { useState } from "react"; import React, { useState } from "react";
import { pond } from "protobuf-ts/pond"; import { pond } from "protobuf-ts/pond";
import { useGlobalState, useTaskAPI } from "providers"; import { useGlobalState, useTaskAPI } from "providers";
import { useSnackbar, useUserAPI } from "hooks"; import { usePermissionAPI, useSnackbar, useUserAPI } from "hooks";
import { useEffect } from "react"; import { useEffect } from "react";
import { Task, teamScope, User } from "models"; import { Task, teamScope, User, userScope } from "models";
import ColourPicker from "common/ColourPicker"; import ColourPicker from "common/ColourPicker";
import ResponsiveDialog from "common/ResponsiveDialog"; import ResponsiveDialog from "common/ResponsiveDialog";
@ -46,13 +48,15 @@ export default function TaskSettings(props: Props) {
const [worker, setWorker] = useState(user.id()); const [worker, setWorker] = useState(user.id());
const [colour, setColour] = useState(""); const [colour, setColour] = useState("");
const taskAPI = useTaskAPI(); const taskAPI = useTaskAPI();
const userAPI = useUserAPI();
const permissionAPI = usePermissionAPI();
const { openSnack } = useSnackbar(); const { openSnack } = useSnackbar();
const [cost, setCost] = useState(""); const [cost, setCost] = useState("");
const [secondaryCost, setSecondaryCost] = useState(""); const [secondaryCost, setSecondaryCost] = useState("");
const [seedCost, setSeedCost] = useState(""); const [seedCost, setSeedCost] = useState("");
const [poundPerAcre, setPoundPerAcre] = useState(0); const [poundPerAcre, setPoundPerAcre] = useState(0);
const userAPI = useUserAPI();
const [users, setUsers] = useState<User[]>([]); const [users, setUsers] = useState<User[]>([]);
const [shareToCreator, setShareToCreator] = useState(true)
useEffect(() => { useEffect(() => {
if (props.task) { if (props.task) {
@ -123,6 +127,22 @@ export default function TaskSettings(props: Props) {
taskAPI taskAPI
.addTask(taskSettings, as, props.keys, props.types) .addTask(taskSettings, as, props.keys, props.types)
.then(resp => { .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); props.onClose(true);
}) })
.catch(err => { .catch(err => {
@ -319,6 +339,18 @@ export default function TaskSettings(props: Props) {
value={endTime} value={endTime}
onChange={e => setEndTime(e.target.value)} onChange={e => setEndTime(e.target.value)}
/> />
{props.keys && props.types && !props.task &&
<FormControlLabel
control={
<Checkbox
checked={shareToCreator}
onChange={e => setShareToCreator(e.target.checked)}
color="primary"
/>
}
label={"Share task with " + (as ? "team" : "user")}
/>
}
<Box marginTop={3}> <Box marginTop={3}>
Colour Colour
<ColourPicker onChange={color => setColour(color)} /> <ColourPicker onChange={color => setColour(color)} />