Thread viewer for Bluesky

tweaked some null/undefined use

+22 -22
+4 -4
src/api/api.js
··· 61 61 62 62 export class BlueskyAPI extends Minisky { 63 63 64 - /** @param {string | undefined} host, @param {boolean} useAuthentication */ 64 + /** @param {string?} host, @param {boolean} useAuthentication */ 65 65 constructor(host, useAuthentication) { 66 66 super(host, useAuthentication ? new LocalStorageConfig() : undefined); 67 67 ··· 255 255 return { cursor: response.cursor, posts: postGroups.flat() }; 256 256 } 257 257 258 - /** @param {Post} post, @returns {Promise<(json | undefined)[]>} */ 258 + /** @param {Post} post, @returns {Promise<?json[]>} */ 259 259 260 260 async loadHiddenReplies(post) { 261 261 let expectedReplyURIs; ··· 274 274 let promises = missingReplyURIs.map(uri => this.loadThreadByAtURI(uri)); 275 275 let responses = await Promise.allSettled(promises); 276 276 277 - return responses.map(r => (r.status == 'fulfilled') ? r.value : undefined); 277 + return responses.map(r => (r.status == 'fulfilled') ? r.value : null); 278 278 } 279 279 280 280 /** ··· 414 414 return data; 415 415 } 416 416 417 - /** @param {string} uri, @returns {Promise<Post | null>} */ 417 + /** @param {string} uri, @returns {Promise<Post?>} */ 418 418 419 419 async reloadBlockedPost(uri) { 420 420 let { repo } = atURI(uri);
+4 -4
src/api/minisky.js
··· 42 42 * @prop {json | null | undefined} user 43 43 * @prop {() => void} save 44 44 * 45 - * @param {string | undefined} host 46 - * @param {MiniskyConfig | null | undefined} [config] 45 + * @param {string?} host 46 + * @param {MiniskyConfig | undefined} [config] 47 47 * @param {MiniskyOptions} [options] 48 48 */ 49 49 ··· 82 82 * @prop {string | boolean} [auth] 83 83 * @prop {Record<string, string>} [headers] 84 84 * 85 - * @param {string} method, @param {json | null} [params], @param {MiniskyRequestOptions} [options] 85 + * @param {string} method, @param {json?} [params], @param {MiniskyRequestOptions} [options] 86 86 * @returns {Promise<json>} 87 87 */ 88 88 ··· 115 115 } 116 116 117 117 /** 118 - * @param {string} method, @param {json | null} [data], @param {MiniskyRequestOptions} [options] 118 + * @param {string} method, @param {json?} [data], @param {MiniskyRequestOptions} [options] 119 119 * @returns {Promise<json>} 120 120 */ 121 121
+1 -1
src/components/posts/BlockedPostView.svelte
··· 36 36 } else if (post.blocksUser) { 37 37 return "you've blocked them"; 38 38 } else { 39 - return undefined; 39 + return null; 40 40 } 41 41 } 42 42 </script>
+2 -2
src/models/account.svelte.js
··· 12 12 constructor() { 13 13 let incognito = localStorage.getItem('incognito'); 14 14 let biohazard = JSON.parse(localStorage.getItem('biohazard') ?? 'null'); 15 - let accountAPI = new BlueskyAPI(undefined, true); 15 + let accountAPI = new BlueskyAPI(null, true); 16 16 17 17 this.#isIncognito = $state(accountAPI.isLoggedIn && !!incognito); 18 18 this.#biohazardEnabled = $state(biohazard); ··· 37 37 location.reload(); 38 38 } 39 39 40 - /** @returns {boolean | undefined} */ 40 + /** @returns {boolean?} */ 41 41 42 42 get biohazardEnabled() { 43 43 return this.#biohazardEnabled;
+1 -1
src/pages/ThreadPage.svelte
··· 6 6 import ThreadRootParent from '../components/posts/ThreadRootParent.svelte'; 7 7 import ThreadRootParentRaw from '../components/posts/ThreadRootParentRaw.svelte'; 8 8 9 - let { url = null, author = null, rkey = null } = $props(); 9 + let { url = undefined, author = undefined, rkey = undefined } = $props(); 10 10 let post = $state(); 11 11 let loadingFailed = $state(false); 12 12
+7 -7
src/services/posting_stats.js
··· 53 53 } 54 54 } 55 55 56 - /** @param {number} requestedDays, @returns {Promise<PostingStatsResult | undefined>} */ 56 + /** @param {number} requestedDays, @returns {Promise<PostingStatsResult?>} */ 57 57 58 58 async scanHomeTimeline(requestedDays) { 59 59 let startTime = new Date().getTime(); ··· 67 67 return this.generateResults(posts, requestedDays, startTime); 68 68 } 69 69 70 - /** @param {string} listURI, @param {number} requestedDays, @returns {Promise<PostingStatsResult | undefined>} */ 70 + /** @param {string} listURI, @param {number} requestedDays, @returns {Promise<PostingStatsResult?>} */ 71 71 72 72 async scanListTimeline(listURI, requestedDays) { 73 73 let startTime = new Date().getTime(); ··· 81 81 return this.generateResults(posts, requestedDays, startTime); 82 82 } 83 83 84 - /** @param {UserWithHandle[]} users, @returns {Promise<PostingStatsResult | undefined>} */ 84 + /** @param {UserWithHandle[]} users, @returns {Promise<PostingStatsResult?>} */ 85 85 86 86 async scanUserTimelines(users, requestedDays) { 87 87 let startTime = new Date().getTime(); ··· 108 108 return this.generateResults(posts, requestedDays, startTime, { countFetchedDays: false, users: users }); 109 109 } 110 110 111 - /** @param {number} requestedDays, @returns {Promise<PostingStatsResult | undefined>} */ 111 + /** @param {number} requestedDays, @returns {Promise<PostingStatsResult?>} */ 112 112 113 113 async scanYourTimeline(requestedDays) { 114 114 let startTime = new Date().getTime(); ··· 128 128 * @param {number} requestedDays 129 129 * @param {number} startTime 130 130 * @param {{ countFetchedDays?: boolean, users?: UserWithHandle[] }} options 131 - * @returns {PostingStatsResult | undefined} 131 + * @returns {PostingStatsResult?} 132 132 */ 133 133 134 134 generateResults(posts, requestedDays, startTime, options = {}) { ··· 136 136 137 137 if (!last) { 138 138 this.stopScan(); 139 - return; 139 + return null; 140 140 } 141 141 142 142 if (this.scanStartTime != startTime) { 143 - return; 143 + return null; 144 144 } 145 145 146 146 let users = {};
+2 -2
src/services/timeline_search.js
··· 43 43 this.fetchStartTime = undefined; 44 44 } 45 45 46 - /** @param {json[]} dataPage, @param {number} startTime, @returns {number | undefined} */ 46 + /** @param {json[]} dataPage, @param {number} startTime, @returns {number?} */ 47 47 48 48 calculateProgress(dataPage, startTime) { 49 49 let last = dataPage.at(-1); 50 50 51 - if (!last) { return } 51 + if (!last) { return null; } 52 52 53 53 let lastDate = feedPostTime(last); 54 54 let daysBack = (startTime - lastDate) / 86400 / 1000;
+1 -1
src/skythread.js
··· 49 49 50 50 window.appView = new BlueskyAPI('api.bsky.app', false); 51 51 window.blueAPI = new BlueskyAPI('blue.mackuba.eu', false); 52 - window.accountAPI = new BlueskyAPI(undefined, true); 52 + window.accountAPI = new BlueskyAPI(null, true); 53 53 54 54 if (accountAPI.isLoggedIn) { 55 55 accountAPI.host = accountAPI.user.pdsEndpoint;