feat: add MeasurementDetailScreen, 365-day charts, and edit support
- New MeasurementDetailScreen with wijzigen/verwijderen - WeightChart now supports 30 and 365 days - NewMeasurementScreen now handles both create and edit - Updated README to match current code - Add build-toolchain documentation - Ignore *.apk build artifacts
This commit is contained in:
parent
c499f7df13
commit
ed714af8d1
15 changed files with 730 additions and 130 deletions
|
|
@ -6,14 +6,16 @@ const WEBDAV_PATH = 'weegschaal/measurements.json'
|
|||
|
||||
type SyncResult = { local: number; remote: number; merged: number }
|
||||
|
||||
export function mergeMeasurements(local: Measurement[], remote: Measurement[]): Measurement[] {
|
||||
export function mergeMeasurements(local: Measurement[], remote: Measurement[], excludeIds?: Set<string>): Measurement[] {
|
||||
const map = new Map<string, Measurement>()
|
||||
|
||||
for (const m of local) {
|
||||
if (excludeIds?.has(m.id)) continue
|
||||
map.set(m.id, m)
|
||||
}
|
||||
|
||||
for (const m of remote) {
|
||||
if (excludeIds?.has(m.id)) continue
|
||||
const existing = map.get(m.id)
|
||||
if (!existing || new Date(m.updatedAt) > new Date(existing.updatedAt)) {
|
||||
map.set(m.id, { ...m, syncStatus: 'synced' })
|
||||
|
|
@ -82,7 +84,7 @@ async function uploadRemote(
|
|||
}
|
||||
}
|
||||
|
||||
export async function syncAll(): Promise<SyncResult> {
|
||||
export async function syncAll(excludeIds?: Set<string>): Promise<SyncResult> {
|
||||
const config = await getWebDAVConfig()
|
||||
if (!config) {
|
||||
throw new Error('Geen WebDAV configuratie. Stel deze eerst in in Instellingen.')
|
||||
|
|
@ -93,7 +95,7 @@ export async function syncAll(): Promise<SyncResult> {
|
|||
const local = await getAllMeasurements()
|
||||
const remote = await fetchRemote(config)
|
||||
|
||||
const merged = mergeMeasurements(local, remote)
|
||||
const merged = mergeMeasurements(local, remote, excludeIds)
|
||||
|
||||
for (const m of merged) {
|
||||
await upsertMeasurement(m)
|
||||
|
|
|
|||
Loading…
Reference in a new issue