Merge branch 'main' of https://github.com/meauxt/donetick-frontend
This commit is contained in:
commit
c06d5f1f30
4 changed files with 106 additions and 64 deletions
40
.github/workflows/build.yml
vendored
Normal file
40
.github/workflows/build.yml
vendored
Normal file
|
@ -0,0 +1,40 @@
|
|||
name: Build validation
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "main", "develop" ]
|
||||
pull_request:
|
||||
branches: [ "main", "develop" ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [20.x, 22.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
- name: Install dependencies
|
||||
run: npm i
|
||||
- run: npm run build
|
||||
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Use Node.js 22
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
cache: 'npm'
|
||||
- name: Install dependencies
|
||||
run: npm i
|
||||
# Lint currently reporting lots of preexisting issues
|
||||
# - run: npm run lint
|
|
@ -321,7 +321,7 @@ const ChoreEdit = () => {
|
|||
// }, [userLabels, labelsV2])
|
||||
|
||||
useEffect(() => {
|
||||
// if frequancy type change to somthing need a due date then set it to the current date:
|
||||
// if frequency type change to somthing need a due date then set it to the current date:
|
||||
if (!NO_DUE_DATE_REQUIRED_TYPE.includes(frequencyType) && !dueDate) {
|
||||
setDueDate(moment(new Date()).format('YYYY-MM-DDTHH:mm:00'))
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ import { UserContext } from '../../contexts/UserContext'
|
|||
import { isPlusAccount } from '../../utils/Helpers'
|
||||
import ThingTriggerSection from './ThingTriggerSection'
|
||||
|
||||
const FREQUANCY_TYPES_RADIOS = [
|
||||
const FREQUENCY_TYPES_RADIOS = [
|
||||
'daily',
|
||||
'weekly',
|
||||
'monthly',
|
||||
|
@ -37,23 +37,6 @@ const FREQUENCY_TYPE_MESSAGE = {
|
|||
custom: 'This chore will be scheduled based on a custom frequency.',
|
||||
}
|
||||
const REPEAT_ON_TYPE = ['interval', 'days_of_the_week', 'day_of_the_month']
|
||||
const FREQUANCY_TYPES = [
|
||||
'once',
|
||||
'daily',
|
||||
'weekly',
|
||||
'monthly',
|
||||
'yearly',
|
||||
'adaptive',
|
||||
...REPEAT_ON_TYPE,
|
||||
]
|
||||
const MONTH_WITH_NO_31_DAYS = [
|
||||
// TODO: Handle these months if day is 31
|
||||
'february',
|
||||
'april',
|
||||
'june',
|
||||
'september',
|
||||
'november',
|
||||
]
|
||||
const MONTHS = [
|
||||
'january',
|
||||
'february',
|
||||
|
@ -93,7 +76,6 @@ const RepeatOnSections = ({
|
|||
const [daysOfTheWeek, setDaysOfTheWeek] = useState({})
|
||||
const [monthsOfTheYear, setMonthsOfTheYear] = useState({})
|
||||
const [intervalUnit, setIntervalUnit] = useState('days')
|
||||
const [frequancyMetadata, setFrequancyMetadata] = useState({})
|
||||
const [time, setTime] = useState('18:00')
|
||||
const timePickerComponent = (
|
||||
<Grid item sm={12} sx={{ display: 'flex', alignItems: 'center' }}>
|
||||
|
@ -393,7 +375,7 @@ const RepeatSection = ({
|
|||
'--ListItem-radius': '20px',
|
||||
}}
|
||||
>
|
||||
{FREQUANCY_TYPES_RADIOS.map((item, index) => (
|
||||
{FREQUENCY_TYPES_RADIOS.map((item, index) => (
|
||||
<ListItem key={item}>
|
||||
<Checkbox
|
||||
// disabled={index === 0}
|
||||
|
|
|
@ -7,6 +7,8 @@ import {
|
|||
CircularProgress,
|
||||
Container,
|
||||
Divider,
|
||||
FormControl,
|
||||
FormHelperText,
|
||||
Input,
|
||||
Typography,
|
||||
} from '@mui/joy'
|
||||
|
@ -28,6 +30,7 @@ import {
|
|||
PutWebhookURL,
|
||||
UpdatePassword,
|
||||
} from '../../utils/Fetcher'
|
||||
import { isPlusAccount } from '../../utils/Helpers'
|
||||
import PassowrdChangeModal from '../Modals/Inputs/PasswordChangeModal'
|
||||
import APITokenSettings from './APITokenSettings'
|
||||
import NotificationSetting from './NotificationSetting'
|
||||
|
@ -327,52 +330,69 @@ const Settings = () => {
|
|||
services when events happen in your Circle. Use the webhook URL
|
||||
below to
|
||||
</Typography>
|
||||
<Checkbox
|
||||
checked={webhookURL !== null}
|
||||
onClick={() => {
|
||||
if (webhookURL === null) {
|
||||
setWebhookURL('')
|
||||
} else {
|
||||
setWebhookURL(null)
|
||||
}
|
||||
}}
|
||||
variant='soft'
|
||||
label={'Enable Webhook'}
|
||||
/>
|
||||
<>
|
||||
{webhookURL !== null && (
|
||||
<Typography level='title-sm'>
|
||||
Webhook URL
|
||||
<Input
|
||||
value={webhookURL ? webhookURL : ''}
|
||||
onChange={e => setWebhookURL(e.target.value)}
|
||||
size='lg'
|
||||
sx={{
|
||||
width: '220px',
|
||||
mb: 1,
|
||||
}}
|
||||
/>
|
||||
<Typography level='body-sm' color='danger'>
|
||||
{webhookError}
|
||||
</Typography>
|
||||
</Typography>
|
||||
)}
|
||||
<Button
|
||||
variant='soft'
|
||||
sx={{ width: '110px' }}
|
||||
<FormControl sx={{ mt: 1 }}>
|
||||
<Checkbox
|
||||
checked={webhookURL !== null}
|
||||
onClick={() => {
|
||||
PutWebhookURL(webhookURL).then(resp => {
|
||||
if (resp.ok) {
|
||||
alert('Webhook URL updated successfully.')
|
||||
} else {
|
||||
alert('Failed to update webhook URL.')
|
||||
}
|
||||
})
|
||||
if (webhookURL === null) {
|
||||
setWebhookURL('')
|
||||
} else {
|
||||
setWebhookURL(null)
|
||||
}
|
||||
}}
|
||||
variant='soft'
|
||||
label='Enable Webhook'
|
||||
disabled={!isPlusAccount(userProfile)}
|
||||
overlay
|
||||
/>
|
||||
<FormHelperText
|
||||
sx={{
|
||||
opacity: !isPlusAccount(userProfile) ? 0.5 : 1,
|
||||
}}
|
||||
>
|
||||
Save
|
||||
</Button>
|
||||
</>
|
||||
Enable webhook notifications for tasks and things updates.{' '}
|
||||
{userProfile && !isPlusAccount(userProfile) && (
|
||||
<Chip variant='soft' color='warning'>
|
||||
Not available in Basic Plan
|
||||
</Chip>
|
||||
)}
|
||||
</FormHelperText>
|
||||
<>
|
||||
{webhookURL !== null && (
|
||||
<Typography level='title-sm'>
|
||||
Webhook URL
|
||||
<Input
|
||||
value={webhookURL ? webhookURL : ''}
|
||||
onChange={e => setWebhookURL(e.target.value)}
|
||||
size='lg'
|
||||
sx={{
|
||||
width: '220px',
|
||||
mb: 1,
|
||||
}}
|
||||
/>
|
||||
<Typography level='body-sm' color='danger'>
|
||||
{webhookError}
|
||||
</Typography>
|
||||
</Typography>
|
||||
)}
|
||||
<Button
|
||||
variant='soft'
|
||||
sx={{ width: '110px', mt: 1 }}
|
||||
onClick={() => {
|
||||
PutWebhookURL(webhookURL).then(resp => {
|
||||
if (resp.ok) {
|
||||
alert('Webhook URL updated successfully.')
|
||||
} else {
|
||||
alert('Failed to update webhook URL.')
|
||||
}
|
||||
})
|
||||
}}
|
||||
disabled={!isPlusAccount(userProfile)}
|
||||
>
|
||||
Save
|
||||
</Button>
|
||||
</>
|
||||
</FormControl>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
|
|
Loading…
Add table
Reference in a new issue