Remember when you made an A+ post last year and everyone clapped bailey.tngl.io/remember-when
2
fork

Configure Feed

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

Getting started

+116
+14
README.md
··· 1 + # Remember When 2 + 3 + ## Notes for streaming 4 + - DO NOT DOX YOURSELF 5 + - Can run file server with `caddy file-server` 6 + - Don't let mic echo 7 + 8 + ## TODO 9 + - [ ] input for the users handle or did 10 + - [ ] that input will look up the users posts for that day a year ago 11 + - [ ] show the posts using bluesky's embed (keep it nice and simple) 12 + - [ ] add in oauth login to repost the post 13 + - [ ] publish on tangled 14 + - [ ] and then we might css.
+102
index.html
··· 1 + <!doctype html> 2 + <html> 3 + <head> 4 + <meta charset="utf-8" /> 5 + <title>Remember When</title> 6 + <meta name="description" content="" /> 7 + <meta 8 + name="viewport" content="width=device-width, initial-scale=1" /> 9 + </head> 10 + 11 + 12 + <body> 13 + <div> 14 + <form id="lookupForm" > 15 + <h1>Remember when?</h1> 16 + <label>Atmosphere account:</label> 17 + <input id="handle"></input> 18 + <button type="submit">Remember</button> 19 + </form> 20 + </div> 21 + 22 + <script type="module"> 23 + import { 24 + LocalActorResolver, 25 + XrpcHandleResolver, 26 + CompositeDidDocumentResolver, 27 + PlcDidDocumentResolver, 28 + WebDidDocumentResolver, 29 + CompositeHandleResolver, 30 + DohJsonHandleResolver, 31 + WellKnownHandleResolver, 32 + } from "https://cdn.jsdelivr.net/npm/@atcute/identity-resolver/+esm"; 33 + 34 + import { 35 + getPdsEndpoint 36 + } from "https://cdn.jsdelivr.net/npm/@atcute/identity/+esm"; 37 + 38 + import * as TID from "https://cdn.jsdelivr.net/npm/@atcute/tid/+esm"; 39 + 40 + const handleResolver = new CompositeHandleResolver({ 41 + methods: { 42 + dns: new DohJsonHandleResolver({ 43 + dohUrl: "https://cloudflare-dns.com/dns-query", 44 + }), 45 + http: new WellKnownHandleResolver(), 46 + }, 47 + }); 48 + 49 + const didResolver = new CompositeDidDocumentResolver({ 50 + methods: { 51 + plc: new PlcDidDocumentResolver(), 52 + web: new WebDidDocumentResolver(), 53 + }, 54 + }); 55 + 56 + 57 + async function lookupIdentifier(event) { 58 + try { 59 + event.preventDefault(); 60 + const identifier = document.getElementById("handle").value; 61 + let did; 62 + if (identifier.startsWith('did:')) { 63 + did = identifier; 64 + } else { 65 + did = await handleResolver.resolve(identifier); 66 + } 67 + 68 + const didDoc = await didResolver.resolve(did); 69 + const pds = getPdsEndpoint(didDoc); // #atproto_pds 70 + await findPostsFromThatDay(did, pds); 71 + } catch (e) { 72 + console.error(e); 73 + alert("Failed to resolve PDS endpoint: " + e.message); 74 + } 75 + } 76 + 77 + async function findPostsFromThatDay(did, pds) { 78 + try { 79 + const thisDayLastYear = new Date(); 80 + thisDayLastYear.setFullYear(thisDayLastYear.getFullYear() - 1); 81 + thisDayLastYear.setHours(0,0,0,0); 82 + console.log(thisDayLastYear); 83 + const lastYearTimestamp = thisDayLastYear.getTime() * 1_000; 84 + const lastYearTid = TID.create(lastYearTimestamp, 23); 85 + console.log(lastYearTid); 86 + } catch (e) { 87 + console.error(e); 88 + alert("Failed to find posts from that day: " + e.message); 89 + } 90 + } 91 + 92 + 93 + //Start up code on dom loaded 94 + document.addEventListener("DOMContentLoaded", function() { 95 + const lookUpForm = document.getElementById("lookupForm"); 96 + lookUpForm.addEventListener("submit", lookupIdentifier); 97 + }); 98 + 99 + </script> 100 + 101 + </body> 102 + </html>