Merge branch 'dev'

This commit is contained in:
Mo Tarbin
2026-02-10 20:38:16 -05:00
5 changed files with 27 additions and 81 deletions

View File

@@ -7,8 +7,8 @@ android {
applicationId "com.donetick.app" applicationId "com.donetick.app"
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 13 versionCode 22
versionName "1.0.4" versionName "0.4.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
aaptOptions { aaptOptions {
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.

View File

@@ -355,12 +355,12 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = App/App.entitlements; CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 13; CURRENT_PROJECT_VERSION = 22;
DEVELOPMENT_TEAM = 6UJJ78R3BS; DEVELOPMENT_TEAM = 6UJJ78R3BS;
INFOPLIST_FILE = App/Info.plist; INFOPLIST_FILE = App/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0; IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 1.0.4; MARKETING_VERSION = 0.4.0;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
@@ -374,12 +374,12 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = App/App.entitlements; CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 13; CURRENT_PROJECT_VERSION = 22;
DEVELOPMENT_TEAM = 6UJJ78R3BS; DEVELOPMENT_TEAM = 6UJJ78R3BS;
INFOPLIST_FILE = App/Info.plist; INFOPLIST_FILE = App/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0; IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 1.0.4; MARKETING_VERSION = 0.4.0;
PRODUCT_BUNDLE_IDENTIFIER = com.donetick.app; PRODUCT_BUNDLE_IDENTIFIER = com.donetick.app;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "";

View File

@@ -1,7 +1,7 @@
{ {
"name": "donetick", "name": "donetick",
"private": true, "private": true,
"version": "0.1.145", "version": "0.4.0",
"type": "module", "type": "module",
"engines": { "engines": {
"node": ">=20.0.0", "node": ">=20.0.0",
@@ -29,7 +29,10 @@
"merge": "git checkout main && git merge develop && git push origin main && git checkout develop", "merge": "git checkout main && git merge develop && git push origin main && git checkout develop",
"ionic:build": "npm run build", "ionic:build": "npm run build",
"ionic:serve": "npm run start", "ionic:serve": "npm run start",
"android": "npm run build && npx cap sync android" "android": "npm run build && npx cap sync android",
"bump": "node bump-version.js",
"bump:minor": "node bump-version.js minor",
"bump:major": "node bump-version.js major"
}, },
"dependencies": { "dependencies": {
"@capacitor-community/sqlite": "^7.0.0", "@capacitor-community/sqlite": "^7.0.0",

View File

@@ -1,14 +1,14 @@
import DeleteIcon from '@mui/icons-material/Delete' import DeleteIcon from '@mui/icons-material/Delete'
import EditIcon from '@mui/icons-material/Edit' import EditIcon from '@mui/icons-material/Edit'
import { import {
Avatar, Avatar,
Box, Box,
Chip, Chip,
CircularProgress, CircularProgress,
Container, Container,
IconButton, IconButton,
Stack, Stack,
Typography, Typography,
} from '@mui/joy' } from '@mui/joy'
import { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
import LabelModal from '../Modals/Inputs/LabelModal' import LabelModal from '../Modals/Inputs/LabelModal'
@@ -16,11 +16,11 @@ import LabelModal from '../Modals/Inputs/LabelModal'
import { Add } from '@mui/icons-material' import { Add } from '@mui/icons-material'
import { useQueryClient } from '@tanstack/react-query' import { useQueryClient } from '@tanstack/react-query'
import { import {
Type as ListType, Type as ListType,
SwipeableList, SwipeableList,
SwipeableListItem, SwipeableListItem,
SwipeAction, SwipeAction,
TrailingActions, TrailingActions,
} from 'react-swipeable-list' } from 'react-swipeable-list'
import 'react-swipeable-list/dist/styles.css' import 'react-swipeable-list/dist/styles.css'
import { useUserProfile } from '../../queries/UserQueries' import { useUserProfile } from '../../queries/UserQueries'

View File

@@ -1,5 +1,4 @@
import { NextWeek, Today, WbSunny, Weekend } from '@mui/icons-material' import { Box, Button, Input } from '@mui/joy'
import { Box, Button, Chip, Input, Stack, Typography } from '@mui/joy'
import { useState } from 'react' import { useState } from 'react'
import { useResponsiveModal } from '../../../hooks/useResponsiveModal' import { useResponsiveModal } from '../../../hooks/useResponsiveModal'
@@ -10,62 +9,6 @@ function DateModal({ isOpen, onClose, onSave, current, title }) {
current ? new Date(current).toISOString().split('T')[0] : '', current ? new Date(current).toISOString().split('T')[0] : '',
) )
const getQuickScheduleDate = option => {
const now = new Date()
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate())
switch (option) {
case 'today': {
const nowHour = now.getHours()
const scheduled = new Date(today)
if (nowHour < 9) {
scheduled.setHours(9, 0, 0, 0)
} else if (nowHour < 12) {
scheduled.setHours(12, 0, 0, 0)
} else if (nowHour < 17) {
scheduled.setHours(17, 0, 0, 0)
} else {
scheduled.setHours(
now.getHours(),
now.getMinutes(),
now.getSeconds(),
now.getMilliseconds(),
)
}
return scheduled
}
case 'tomorrow': {
const tomorrow = new Date(today)
tomorrow.setDate(today.getDate() + 1)
tomorrow.setHours(12, 0, 0, 0)
return tomorrow
}
case 'weekend': {
const weekend = new Date(today)
const daysUntilSaturday = (6 - today.getDay() + 7) % 7 || 7
weekend.setDate(today.getDate() + daysUntilSaturday)
return weekend
}
case 'next-week': {
const nextWeek = new Date(today)
const daysUntilMonday = (1 - today.getDay() + 7) % 7 || 7
nextWeek.setDate(today.getDate() + daysUntilMonday)
return nextWeek
}
default:
return today
}
}
const handleQuickSchedule = option => {
if (option === 'remove') {
setDate('')
} else {
const selectedDate = getQuickScheduleDate(option)
setDate(selectedDate.toISOString().split('T')[0])
}
}
const handleSave = () => { const handleSave = () => {
onSave(date) onSave(date)
onClose() onClose()
@@ -86,7 +29,7 @@ function DateModal({ isOpen, onClose, onSave, current, title }) {
onChange={e => setDate(e.target.value)} onChange={e => setDate(e.target.value)}
/> />
<Box sx={{ mt: 3 }}> {/* <Box sx={{ mt: 3 }}>
<Typography level='body-sm' sx={{ mb: 1.5, fontWeight: 500 }}> <Typography level='body-sm' sx={{ mb: 1.5, fontWeight: 500 }}>
Quick select: Quick select:
</Typography> </Typography>
@@ -132,7 +75,7 @@ function DateModal({ isOpen, onClose, onSave, current, title }) {
Next week Next week
</Chip> </Chip>
</Stack> </Stack>
</Box> </Box> */}
<Box display={'flex'} justifyContent={'space-around'} mt={4}> <Box display={'flex'} justifyContent={'space-around'} mt={4}>
<Button size='lg' onClick={handleSave} fullWidth sx={{ mr: 1 }}> <Button size='lg' onClick={handleSave} fullWidth sx={{ mr: 1 }}>