diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 732b3d4..3e217f2 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -1,4 +1,4 @@ -name: Build App +name: Luggage List Build on: push: branches: @@ -49,13 +49,13 @@ jobs: --profile=preview - name: ๐Ÿ“ Rename build to APK - run: mv app-build app-release.apk + run: mv app-build luggage-list-release.apk - name: ๐Ÿ“ค Upload build artifact uses: actions/upload-artifact@v3 with: - name: android-preview-build - path: app-release.apk + name: luggage-list-android-preview-build + path: luggage-list-release.apk if-no-files-found: error build-web: @@ -88,13 +88,13 @@ jobs: run: npx expo export --platform web - name: ๐Ÿ“ฆ Zip dist - run: cd dist && zip -r ../dist.zip . + run: cd dist && zip -r ../luggage-list-dist.zip . - name: ๐Ÿ“ค Upload build artifact uses: actions/upload-artifact@v3 with: - name: web-build - path: dist.zip + name: luggage-list-web-build + path: luggage-list-dist.zip if-no-files-found: error release: @@ -107,16 +107,16 @@ jobs: - name: ๐Ÿ“ฅ Download Android artifact uses: actions/download-artifact@v3 with: - name: android-preview-build + name: luggage-list-android-preview-build - name: ๐Ÿ“ฅ Download Web artifact uses: actions/download-artifact@v3 with: - name: web-build + name: luggage-list-web-build - name: ๐Ÿท Create tag run: | - TAG="build-$(git rev-parse --short HEAD)" + TAG="luggage-list-build-$(git rev-parse --short HEAD)" git tag "$TAG" git push origin "$TAG" echo "RELEASE_TAG=$TAG" >> $GITHUB_ENV @@ -127,8 +127,8 @@ jobs: tag_name: ${{ env.RELEASE_TAG }} name: ${{ env.RELEASE_TAG }} files: | - app-release.apk - dist.zip + luggage-list-release.apk + luggage-list-dist.zip generate_release_notes: true env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index d8ea0c7..97e3a02 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -1,4 +1,4 @@ -name: Dev Branch Check +name: Luggage List Dev Branch Check on: push: branches-ignore: @@ -24,5 +24,5 @@ jobs: - name: ๐Ÿ“ฆ Install dependencies run: pnpm install - - name: ๐Ÿงช Check for linting/type errors + - name: ๐Ÿงช Web export smoke check run: npx expo export --platform web diff --git a/.gitea/workflows/manual-build.yml b/.gitea/workflows/manual-build.yml index 432169e..697a779 100644 --- a/.gitea/workflows/manual-build.yml +++ b/.gitea/workflows/manual-build.yml @@ -1,4 +1,4 @@ -name: Manual APK Build +name: Luggage List Manual APK Build on: workflow_dispatch: @@ -47,11 +47,11 @@ jobs: --profile=preview - name: ๐Ÿ“ Rename build to APK - run: mv app-build time-until-manual.apk + run: mv app-build luggage-list-manual.apk - name: ๐Ÿ“ค Upload build artifact uses: actions/upload-artifact@v3 with: - name: manual-apk-build - path: time-until-manual.apk + name: luggage-list-manual-apk-build + path: luggage-list-manual.apk if-no-files-found: error diff --git a/App.js b/App.js index 3797199..41ba7a2 100644 --- a/App.js +++ b/App.js @@ -292,6 +292,33 @@ export default function App() { setData((prev) => ({ ...prev, defaultTemplateTripId: tripId })); } + function deleteTrip(tripId) { + Alert.alert('Delete trip?', 'This removes the trip, its items, and its check-up history.', [ + { text: 'Cancel', style: 'cancel' }, + { + text: 'Delete', + style: 'destructive', + onPress: () => { + setData((prev) => { + const nextTrips = prev.trips.filter((trip) => trip.id !== tripId); + const nextItemsByTrip = { ...prev.itemsByTrip }; + const nextCheckupsByTrip = { ...prev.checkupsByTrip }; + delete nextItemsByTrip[tripId]; + delete nextCheckupsByTrip[tripId]; + + return { + ...prev, + trips: nextTrips, + itemsByTrip: nextItemsByTrip, + checkupsByTrip: nextCheckupsByTrip, + defaultTemplateTripId: prev.defaultTemplateTripId === tripId ? null : prev.defaultTemplateTripId, + }; + }); + }, + }, + ]); + } + function saveItem() { if (!selectedTripId) { Alert.alert('No trip', 'Create or select a trip first.'); @@ -629,9 +656,14 @@ export default function App() { {data.defaultTemplateTripId === trip.id ? ' โ€ข Template' : ''} - setTripAsTemplate(trip.id)}> - Template - + + setTripAsTemplate(trip.id)}> + Template + + deleteTrip(trip.id)}> + Delete + + ))} diff --git a/TODO.md b/TODO.md index 6e74359..85c8cb4 100644 --- a/TODO.md +++ b/TODO.md @@ -19,6 +19,12 @@ - [x] Default luggage list template (copy into new trip) ## Remaining -- [ ] Adjust CI/CD workflow naming and artifact naming for this project -- [ ] Validate app builds (web export smoke check) +- [x] Adjust CI/CD workflow naming and artifact naming for this project +- [x] Validate app builds (web export smoke check) - [ ] Polish README and commit final notes + +## Progress Log +- [x] Initial MVP scaffold and all requested core features implemented +- [x] Added trip deletion flow and confirmation +- [x] Updated Gitea workflows/artifacts naming for Luggage List +- [x] Ran local web export smoke checks successfully