-
Notifications
You must be signed in to change notification settings - Fork 9
feat: Add DDD Perth App download page and announcements management #88
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
JakeGinnivan
commented
Sep 15, 2025
- Created a new route for the DDD Perth App download page with relevant content and links to app stores.
- Updated the main layout to include venue information.
- Enhanced admin settings to manage app announcements, including creating, updating, and clearing announcements.
- Implemented a loader for fetching active announcements for the app.
- Added SVG and PNG images for app download buttons.
- Updated type definitions to include new routes for the app.
- Created a new route for the DDD Perth App download page with relevant content and links to app stores. - Updated the main layout to include venue information. - Enhanced admin settings to manage app announcements, including creating, updating, and clearing announcements. - Implemented a loader for fetching active announcements for the app. - Added SVG and PNG images for app download buttons. - Updated type definitions to include new routes for the app.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds comprehensive mobile app support infrastructure including a download page for the DDD Perth app and an admin system for managing announcements. The implementation replaces the previous Google Forms-based announcement system with a database-backed solution that provides better control and reliability.
- Created a new app download page with links to iOS and Android app stores
- Implemented a complete announcements management system for administrators
- Enhanced the header navigation to conditionally show venue information
Reviewed Changes
Copilot reviewed 7 out of 10 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| website/app/routes/app-announcements.tsx | Replaces Google Forms integration with database-backed announcement retrieval |
| website/app/routes/admin.settings.tsx | Adds announcement creation, updating, and clearing functionality to admin interface |
| website/app/routes/_layout.tsx | Updates header component to pass venue information |
| website/app/routes/_layout.app.tsx | Creates new app download page with store links and user guidance |
| website/app/lib/announcements.server.ts | Implements server-side announcement management using Azure Table Storage |
| website/app/components/header/header.tsx | Adds conditional venue navigation link and removes team link |
| website-content/pages/about.mdx | Adds team section reference to about page |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| {announcement.message} | ||
| </styled.p> | ||
| <styled.p color="green.600" fontSize="xs"> | ||
| Last updated: {DateTime.fromISO(announcement.updatedTime || announcement.createdTime).toLocaleString(DateTime.DATETIME_SHORT, { locale: 'en-AU' })} |
Copilot
AI
Sep 15, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This line is complex and hard to read. Consider extracting the date formatting logic into a helper function or variable for better readability and reusability.
| } catch (error: any) { | ||
| if (error.statusCode !== 409) { | ||
| throw error |
Copilot
AI
Sep 15, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using 'any' type defeats TypeScript's type safety. Consider using 'unknown' or a more specific error type that matches the expected Azure Table Storage error structure.
| } catch (error: any) { | |
| if (error.statusCode !== 409) { | |
| throw error | |
| } catch (error: unknown) { | |
| if ( | |
| typeof error === "object" && | |
| error !== null && | |
| "statusCode" in error && | |
| typeof (error as { statusCode?: unknown }).statusCode === "number" | |
| ) { | |
| if ((error as { statusCode: number }).statusCode !== 409) { | |
| throw error; | |
| } | |
| } else { | |
| throw error; |