a a vibe-coded abomination experiment of a fragrance review platform built on the atmosphere. drydown.social

fixing build issues to deploy

+14 -32
-6
src/app.tsx
··· 60 60 setView('create-review') 61 61 } 62 62 63 - const handleEditReview = (uri: string, stage: 'stage2' | 'stage3') => { 64 - setEditReviewUri(uri) 65 - setEditReviewStage(stage) 66 - setView('edit-review') 67 - } 68 - 69 63 const handleBackToDashboard = () => { 70 64 setView('home') 71 65 setEditReviewUri(null)
+7 -1
src/client/index.ts
··· 7 7 type FetchHandlerOptions, 8 8 } from '@atproto/xrpc' 9 9 import { schemas } from './lexicons.js' 10 - import { CID } from 'multiformats/cid' 11 10 import { type OmitKey, type Un$Typed } from './util.js' 11 + import { 12 + ComAtprotoRepoListRecords, 13 + ComAtprotoRepoGetRecord, 14 + ComAtprotoRepoCreateRecord, 15 + ComAtprotoRepoPutRecord, 16 + ComAtprotoRepoDeleteRecord, 17 + } from '@atproto/api' 12 18 import * as SocialDrydownFragrance from './types/social/drydown/fragrance.js' 13 19 import * as SocialDrydownHouse from './types/social/drydown/house.js' 14 20 import * as SocialDrydownReview from './types/social/drydown/review.js'
+1 -1
src/client/lexicons.ts
··· 7 7 ValidationError, 8 8 type ValidationResult, 9 9 } from '@atproto/lexicon' 10 - import { type $Typed, is$typed, maybe$typed } from './util.js' 10 + import { is$typed, maybe$typed } from './util.js' 11 11 12 12 export const schemaDict = { 13 13 SocialDrydownFragrance: {
+1 -3
src/client/types/social/drydown/fragrance.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { CID } from 'multiformats/cid' 6 4 import { validate as _validate } from '../../../lexicons' 7 - import { type $Typed, is$typed as _is$typed, type OmitKey } from '../../../util' 5 + import { is$typed as _is$typed } from '../../../util' 8 6 9 7 const is$typed = _is$typed, 10 8 validate = _validate
+1 -3
src/client/types/social/drydown/house.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { CID } from 'multiformats/cid' 6 4 import { validate as _validate } from '../../../lexicons' 7 - import { type $Typed, is$typed as _is$typed, type OmitKey } from '../../../util' 5 + import { is$typed as _is$typed } from '../../../util' 8 6 9 7 const is$typed = _is$typed, 10 8 validate = _validate
+1 -3
src/client/types/social/drydown/review.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { CID } from 'multiformats/cid' 6 4 import { validate as _validate } from '../../../lexicons' 7 - import { type $Typed, is$typed as _is$typed, type OmitKey } from '../../../util' 5 + import { is$typed as _is$typed } from '../../../util' 8 6 9 7 const is$typed = _is$typed, 10 8 validate = _validate
+1 -5
src/components/CreateReview.tsx
··· 43 43 44 44 // Use the session's built-in fetchHandler for authenticated requests 45 45 // The fetchHandler automatically routes to the user's PDS using tokenSet.aud 46 - // This object matches the SessionManager interface expected by XrpcClient 47 - const baseClient = new AtpBaseClient({ 48 - did: session.did, 49 - fetchHandler: (url, init) => session.fetchHandler(url, init) 50 - }) 46 + const baseClient = new AtpBaseClient(session.fetchHandler) 51 47 52 48 setAtp(baseClient) 53 49 loadData(baseClient)
+1 -4
src/components/EditReview.tsx
··· 33 33 34 34 useEffect(() => { 35 35 async function loadReview() { 36 - const baseClient = new AtpBaseClient({ 37 - did: session.did, 38 - fetchHandler: (url, init) => session.fetchHandler(url, init) 39 - }) 36 + const baseClient = new AtpBaseClient(session.fetchHandler) 40 37 setAtp(baseClient) 41 38 42 39 const rkey = reviewUri.split('/').pop()!
+1 -6
src/components/ReviewDashboard.tsx
··· 12 12 const [reviews, setReviews] = useState<Array<{ uri: string; value: any }>>([]) 13 13 const [fragrances, setFragrances] = useState<Map<string, { name: string }>>(new Map()) 14 14 const [isLoading, setIsLoading] = useState(true) 15 - const [atp, setAtp] = useState<AtpBaseClient | null>(null) 16 15 17 16 useEffect(() => { 18 17 async function initClient() { 19 - const baseClient = new AtpBaseClient({ 20 - did: session.did, 21 - fetchHandler: (url, init) => session.fetchHandler(url, init) 22 - }) 23 - setAtp(baseClient) 18 + const baseClient = new AtpBaseClient(session.fetchHandler) 24 19 await loadData(baseClient) 25 20 } 26 21 initClient()