Comparing version 0.1.10 to 0.1.11
import { Jsrwrap } from './jsrwrap.js'; | ||
import type { SubmissionData } from './types/submission.js'; | ||
import type { SubredditData } from './types/subreddit.js'; | ||
import type { SubredditData, Widget } from './types/subreddit.js'; | ||
type ListingParams = { | ||
@@ -30,24 +30,5 @@ before?: string; | ||
getSubmissions(options: GetSubmissionOptions): Promise<SubmissionData[]>; | ||
getSidebar(): Promise<{ | ||
content: { | ||
widgets: { | ||
items: { | ||
[key: string]: import("./types/subreddit.js").Widget; | ||
}; | ||
layout: { | ||
idCardWidget: string; | ||
topbar: { | ||
order: string[]; | ||
}; | ||
sidebar: { | ||
order: string[]; | ||
}; | ||
moderatorWidget: string; | ||
}; | ||
}; | ||
}; | ||
style: import("./types/subreddit.js").StructuredStylesStyle; | ||
}>; | ||
getSidebar(): Promise<Widget[]>; | ||
search(params: SearchParams): Promise<SubmissionData[]>; | ||
} | ||
export {}; |
@@ -18,2 +18,31 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
} | ||
function parseWidgets(data) { | ||
const widgets = []; | ||
const widgetItems = data.structuredStyles.data.content.widgets.items; | ||
const widgetLayoutInfo = data.structuredStyles.data.content.widgets.layout; | ||
widgets.push(widgetItems[widgetLayoutInfo.idCardWidget]); | ||
for (const item of widgetLayoutInfo.topbar.order) { | ||
widgets.push(widgetItems[item]); | ||
} | ||
for (const item of widgetLayoutInfo.sidebar.order) { | ||
widgets.push(widgetItems[item]); | ||
} | ||
return widgets; | ||
} | ||
// Unused - Keeping for if it could be used later for getSidebar | ||
// function getAboutFromGatewayData(data: SubredditGatewayData) { | ||
// const id = Object.keys(data.subredditAboutInfo)[0]; | ||
// const about = data.subredditAboutInfo[id]; | ||
// const subredditInfo = data.subreddits[id]; | ||
// const style = data.structuredStyles.data.style; | ||
// return { | ||
// subscribers: about.subscribers, | ||
// description: about.publicDescription, | ||
// created: about.created, | ||
// accountsActive: about.accountsActive, | ||
// bannerBackgroundImage: style.bannerBackgroundImage, | ||
// mobileBannerImage: style.mobileBannerImage, | ||
// communityIcon: style.communityIcon | ||
// }; | ||
// } | ||
export class Subreddit { | ||
@@ -40,3 +69,4 @@ constructor(_reddit, subreddit) { | ||
const subGatewayData = (yield res.json()); | ||
return subGatewayData.structuredStyles.data; | ||
const widgets = parseWidgets(subGatewayData); | ||
return widgets; | ||
}); | ||
@@ -43,0 +73,0 @@ } |
@@ -113,2 +113,11 @@ import type { FlairRichtext, Sort, SubredditType } from './submission.js'; | ||
export interface SubredditGatewayData { | ||
subreddits: { | ||
[key: string]: { | ||
title: string; | ||
displayText: string; | ||
name: string; | ||
url: string; | ||
isNSFW: boolean; | ||
}; | ||
}; | ||
subredditAboutInfo: { | ||
@@ -221,3 +230,3 @@ [key: string]: { | ||
width: number; | ||
linkUrl: string; | ||
linkUrl: string | null; | ||
height: string; | ||
@@ -224,0 +233,0 @@ }[]; |
{ | ||
"name": "jsrwrap", | ||
"version": "0.1.10", | ||
"version": "0.1.11", | ||
"description": "API wrapper for Reddit", | ||
@@ -5,0 +5,0 @@ "repository": { |
70557
1873