A personal media tracker built on the AT Protocol opnshelf.xyz
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: add development script to mobile package.json, enhance session extraction in LoginScreen, and improve logging format in backend services

+25 -11
+1
apps/mobile/package.json
··· 4 4 "main": "index.ts", 5 5 "scripts": { 6 6 "start": "expo start", 7 + "dev": "expo start", 7 8 "android": "expo start --android", 8 9 "ios": "expo start --ios", 9 10 "web": "expo start --web",
+4 -3
apps/mobile/src/screens/LoginScreen.tsx
··· 56 56 ); 57 57 58 58 if (result.type === 'success') { 59 - // Browser redirected back via deep link, navigate to auth complete 60 - // The session param will be extracted from the deep link URL 61 - navigation.replace('AuthComplete', {}); 59 + // Browser redirected back via deep link, extract session from URL 60 + const url = new URL(result.url); 61 + const session = url.searchParams.get('session'); 62 + navigation.replace('AuthComplete', { session: session || undefined }); 62 63 } else { 63 64 setIsSubmitting(false); 64 65 }
+1 -1
apps/web/src/components/ui/alert.tsx
··· 1 - import * as React from "react" 1 + import type * as React from "react" 2 2 import { cva, type VariantProps } from "class-variance-authority" 3 3 4 4 import { cn } from "@/lib/utils"
+3 -1
backend/src/auth/auth.guard.spec.ts
··· 198 198 const result = await guard.canActivate(context); 199 199 200 200 expect(result).toBe(true); 201 - expect(mockAuthService.getSessionById).toHaveBeenCalledWith('session-123'); 201 + expect(mockAuthService.getSessionById).toHaveBeenCalledWith( 202 + 'session-123', 203 + ); 202 204 }); 203 205 }); 204 206 });
+13 -5
backend/src/ingester/ingester.service.ts
··· 1 - import { Injectable, OnModuleInit, OnModuleDestroy, Logger } from '@nestjs/common'; 1 + import { 2 + Injectable, 3 + OnModuleInit, 4 + OnModuleDestroy, 5 + Logger, 6 + } from '@nestjs/common'; 2 7 import { ConfigService } from '@nestjs/config'; 3 8 import { Firehose } from '@atproto/sync'; 4 9 import { IdResolver } from '@atproto/identity'; ··· 39 44 ) { 40 45 // Default to Bluesky's public relay 41 46 this.relayUrl = 42 - this.config.get<string>('ATPROTO_RELAY_URL') || 43 - 'wss://bsky.network'; 47 + this.config.get<string>('ATPROTO_RELAY_URL') || 'wss://bsky.network'; 44 48 } 45 49 46 50 async onModuleInit() { ··· 52 56 } 53 57 54 58 private async startIngester() { 55 - this.logger.log(`Starting firehose ingester, connecting to ${this.relayUrl}`); 59 + this.logger.log( 60 + `Starting firehose ingester, connecting to ${this.relayUrl}`, 61 + ); 56 62 57 63 // IdResolver is required to verify repo signatures on firehose events 58 64 const idResolver = new IdResolver(); ··· 148 154 }, 149 155 }); 150 156 151 - this.logger.debug(`Indexed movie ${record.movieId} for user ${authorDid}`); 157 + this.logger.debug( 158 + `Indexed movie ${record.movieId} for user ${authorDid}`, 159 + ); 152 160 } 153 161 154 162 // Handle delete events
+3 -1
backend/src/movies/movies.service.ts
··· 114 114 validate: false, // PDS may not have app.opnshelf.movie lexicon 115 115 }); 116 116 117 - this.logger.log(`Created AT record for movie ${movieId}: ${response.data.uri}`); 117 + this.logger.log( 118 + `Created AT record for movie ${movieId}: ${response.data.uri}`, 119 + ); 118 120 119 121 // Return the record info for optimistic updates 120 122 return {