This commit is contained in:
Mo Tarbin 2025-02-12 22:26:32 -05:00
commit c06d5f1f30
4 changed files with 106 additions and 64 deletions

40
.github/workflows/build.yml vendored Normal file
View 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

View file

@ -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'))
}

View file

@ -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}

View file

@ -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>