Skip to content

Commit 738bc94

Browse files
Added status page
1 parent ffef8b3 commit 738bc94

3 files changed

Lines changed: 33 additions & 4 deletions

File tree

src/domains/router.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import { authLoginVerificationCodeSchema, handleAuthLoginVerificationCodeRequest
3131
import { handleMapsSearchRequest, mapsSearchSchema } from "../routes/maps/search";
3232
import { handleMapsGeocodeRequest, mapsGeocodeSchema } from "../routes/maps/geocode";
3333
import { handleMapsRouteRequest, mapsRouteSchema } from "../routes/maps/route";
34+
import { handleStatusRequest, statusRequestSchema } from "../routes/status";
3435

3536
export default function createRouter() {
3637
const router = ThrowableRouter();
@@ -47,6 +48,7 @@ export default function createRouter() {
4748
router.post("/api/auth/renew", withAuth, handleAuthRenewRequest);
4849

4950
router.get("/api/feed", withAuth, withSchema(feedRequestSchema), handleFeedRequest);
51+
router.get("/api/status", withAuth, withParams, withSchema(statusRequestSchema), handleStatusRequest);
5052

5153
router.get("/api/maps/geocode", withAuth, withSchema(mapsGeocodeSchema), handleMapsGeocodeRequest);
5254
router.get("/api/maps/search", withAuth, withSchema(mapsSearchSchema), handleMapsSearchRequest);

src/models/FeatureFlags.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1+
export type VersionDeviceFeatureFlags = {
2+
supersededBy?: string;
3+
};
4+
15
export type VersionFeatureFlags = {
2-
uses: string;
3-
46
status: "SUPPORTED" | "UNSUPPORTED" | "DEPRECATED";
5-
6-
supersededBy?: string;
7+
8+
platforms: {
9+
[key: string]: VersionDeviceFeatureFlags;
10+
};
711
};
812

913
export type FeatureFlags = {

src/routes/status.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { getBikesByUser } from "../controllers/bikes/getBikesByUser";
2+
import { getBikeSummaryById } from "../controllers/bikes/summary/getBikeSummaryById";
3+
import { VersionFeatureFlags } from "../models/FeatureFlags";
4+
5+
export const statusRequestSchema = {
6+
query: {
7+
device: {
8+
type: "string",
9+
required: true
10+
}
11+
}
12+
};
13+
14+
export async function handleStatusRequest(request: RequestWithKey, env: Env, context: EventContext<Env, string, null>, featureFlags: VersionFeatureFlags) {
15+
const { device } = request.query;
16+
17+
return Response.json({
18+
success: true,
19+
20+
status: featureFlags.status,
21+
supersededBy: featureFlags.platforms[device]?.supersededBy ?? null
22+
});
23+
};

0 commit comments

Comments
 (0)