tangled
alpha
login
or
join now
whey.party
/
red-dwarf
82
fork
atom
an independent Bluesky client using Constellation, PDS Queries, and other services
reddwarf.app
frontend
spa
bluesky
reddwarf
microcosm
client
app
82
fork
atom
overview
issues
25
pulls
pipelines
Replace the default following feed with Rinds Fresh
whey.party
1 month ago
3e16834d
b31b9e53
+31
-17
1 changed file
expand all
collapse all
unified
split
src
routes
index.tsx
+31
-17
src/routes/index.tsx
···
353
353
354
354
const [isAtTop] = useAtom(isAtTopAtom);
355
355
356
356
+
357
357
+
// todo terrible hack lmaoo (hack type: forcing following feed to fallback to rinds fresh feed)
358
358
+
const selectedFeedComputed = selectedFeed === "following" ? "at://did:plc:mn45tewwnse5btfftvd3powc/app.bsky.feed.generator/rinds" : selectedFeed;
359
359
+
const feedServiceDidComputed = selectedFeed === "following" ? "did:web:rinds.whey.party" : feedServiceDid;
360
360
+
356
361
return (
357
362
<div
358
363
className={`relative flex flex-col divide-y divide-gray-200 dark:divide-gray-800 ${hidden && "hidden"}`}
359
364
>
360
365
{!isAuthRestoring && savedFeeds.length > 0 ? (
361
366
<div className={`flex items-center px-4 py-2 h-[52px] sticky top-0 bg-[var(--header-bg-light)] dark:bg-[var(--header-bg-dark)] ${!isAtTop && "shadow-sm"} sm:shadow-none sm:bg-white sm:dark:bg-gray-950 z-10 border-0 sm:border-b border-gray-200 dark:border-gray-700 overflow-x-auto overflow-y-hidden scroll-thin`}>
362
362
-
{savedFeeds.map((item: any, idx: number) => {return <FeedTabOnTop key={item} item={item} idx={idx} />})}
367
367
+
{savedFeeds.map((item: any, idx: number) => { return <FeedTabOnTop key={item} item={item} idx={idx} /> })}
363
368
</div>
364
369
) : (
365
370
// <span className="text-xl font-bold ml-2">Home</span>
···
377
382
/>
378
383
))} */}
379
384
380
380
-
{isAuthRestoring || authed && (!identity?.pds || !feedServiceDid) && (
385
385
+
{isAuthRestoring || authed && (!identity?.pds || !feedServiceDidComputed) && (
381
386
<div className="p-4 text-center text-gray-500">
382
387
Preparing your feed...
383
388
</div>
···
385
390
386
391
{!isAuthRestoring && (isReadyForAuthedFeed || isReadyForUnauthedFeed) ? (
387
392
<InfiniteCustomFeed
388
388
-
key={selectedFeed!}
389
389
-
feedUri={selectedFeed!}
393
393
+
key={selectedFeedComputed!}
394
394
+
feedUri={selectedFeedComputed!}
390
395
pdsUrl={identity?.pds}
391
391
-
feedServiceDid={feedServiceDid}
396
396
+
feedServiceDid={feedServiceDidComputed}
397
397
+
/>
398
398
+
399
399
+
// todo terrible hack lmaoo (hack type: forcing following feed to fallback to rinds fresh feed)
400
400
+
) : selectedFeed === "following" ? (
401
401
+
<InfiniteCustomFeed
402
402
+
key={"at://did:plc:mn45tewwnse5btfftvd3powc/app.bsky.feed.generator/rinds"}
403
403
+
feedUri={"at://did:plc:mn45tewwnse5btfftvd3powc/app.bsky.feed.generator/rinds"}
404
404
+
pdsUrl={identity?.pds}
405
405
+
feedServiceDid={"did:web:rinds.whey.party"}
392
406
/>
393
407
) : (
394
408
<div className="p-4 text-center text-gray-500">
395
409
Loading.......
396
410
</div>
397
397
-
)}
411
411
+
)
412
412
+
413
413
+
}
398
414
{/* {false && restoringScrollPosition && (
399
415
<div className="fixed top-1/2 left-1/2 right-1/2">
400
416
restoringScrollPosition
···
407
423
408
424
// todo please use types this is dangerous very dangerous.
409
425
// todo fix this whenever proper preferences is handled
410
410
-
function FeedTabOnTop({item, idx}:{item: any, idx: number}) {
426
426
+
function FeedTabOnTop({ item, idx }: { item: any, idx: number }) {
411
427
const [persistentSelectedFeed, setPersistentSelectedFeed] = useAtom(selectedFeedUriAtom);
412
428
const selectedFeed = persistentSelectedFeed
413
429
const setSelectedFeed = setPersistentSelectedFeed
···
418
434
return (
419
435
<button
420
436
key={item.value || idx}
421
421
-
className={`px-3 py-1 rounded-full whitespace-nowrap font-medium transition-colors ${
422
422
-
isActive
423
423
-
? "text-gray-900 dark:text-gray-100 hover:bg-gray-300 dark:bg-gray-700 bg-gray-200 hover:dark:bg-gray-600"
424
424
-
: "text-gray-600 dark:text-gray-400 hover:bg-gray-100 hover:dark:bg-gray-800"
437
437
+
className={`px-3 py-1 rounded-full whitespace-nowrap font-medium transition-colors ${isActive
438
438
+
? "text-gray-900 dark:text-gray-100 hover:bg-gray-300 dark:bg-gray-700 bg-gray-200 hover:dark:bg-gray-600"
439
439
+
: "text-gray-600 dark:text-gray-400 hover:bg-gray-100 hover:dark:bg-gray-800"
425
440
// ? "bg-gray-500 text-white"
426
441
// : item.pinned
427
442
// ? "bg-gray-200 text-gray-700 dark:bg-gray-700 dark:text-gray-200"
428
443
// : "bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-200"
429
429
-
}`}
444
444
+
}`}
430
445
onClick={() => setSelectedFeed(item.value)}
431
446
title={item.value}
432
447
>
433
448
{label}
434
449
{item.pinned && (
435
450
<span
436
436
-
className={`ml-1 text-xs ${
437
437
-
isActive
438
438
-
? "text-gray-900 dark:text-gray-100"
439
439
-
: "text-gray-600 dark:text-gray-400"
440
440
-
}`}
451
451
+
className={`ml-1 text-xs ${isActive
452
452
+
? "text-gray-900 dark:text-gray-100"
453
453
+
: "text-gray-600 dark:text-gray-400"
454
454
+
}`}
441
455
>
442
456
★
443
457
</span>