devvit
devvit copied to clipboard
Reddit API | Reorder Widgets Fails with Error
Issue
Attempting to reorder widgets via the RedditAPIClient.reorderWidgets method is always resulting in an error.
Example Devvit Code
import {Devvit} from '@devvit/public-api';
Devvit.configure({
redditAPI: true,
redis: true
});
Devvit.addSchedulerJob({
name: 'update_community_status',
onRun: async (event, context) => {
if (!context.subredditName) return;
// CORE BUG
// Get all existing widgets
const subWidgets = await context.reddit.getWidgets(context.subredditName);
// Try and simply reverse the order of the widgets
// Next line always results in an error. See full stack below.
await context.reddit.reorderWidgets(context.subredditName, subWidgets.map(w => w.id).reverse());
// CORE BUG
}
});
Devvit.addTrigger({
event: 'AppInstall',
onEvent: async (_, context) => {
try {
const jobId = await context.scheduler.runJob({
cron: '* * * * *',
name: 'update_community_status',
data: {},
});
await context.redis.set('jobId', jobId);
} catch (e) {
console.log('Error: Failed to schedule update_community_status job:', e);
throw e;
}
},
});
export default Devvit;
Error Log
2025-02-10T09:01:52.055Z Error: 2 UNKNOWN: HTTP request to URL: https://oauth.reddit.com/r/BeachBrewsBoil/api/widget_order/section?raw_json=1 failed with error: Patch "https://oauth.reddit.com/r/BeachBrewsBoil/api/widget_order/section?raw_json=1": httpbp.ClientError: http status 400 Bad Request: {"fields": ["section"], "explanation": "that option is not valid", "message": "Bad Request", "reason": "INVALID_OPTION"}
at callErrorFromStatus (node_modules/@devvit/public-api/devvit/internals/blocks/useInterval.js:60:19)
at Object.onReceiveStatus (node_modules/@devvit/public-api/apis/reddit/RedditAPIClient.js:253:4)
at Object.onReceiveStatus (node_modules/@devvit/public-api/apis/reddit/RedditAPIClient.js:50:4)
at Object.onReceiveStatus (node_modules/@devvit/public-api/apis/realtime/RealtimeClient.js:24:39)
at <unknown> (node_modules/@devvit/public-api/apis/reddit/models/Comment.js:94:69)
at process.processTicksAndRejections (node:internal/process/task_queues:85:11)
for call at
at Client2.makeUnaryRequest (node_modules/@devvit/public-api/apis/reddit/RedditAPIClient.js:226:24)
at /srv/index.cjs:132766:62
at /srv/index.cjs:132825:5
at new Promise (<anonymous>)
at GrpcWrapper._GrpcWrapper_promiseWithGrpcCallback2 (/srv/index.cjs:132823:10)
at GrpcWrapper.request (/srv/index.cjs:132765:110)
at GenericPluginClient.OrderWidgets (/srv/index.cjs:118495:93)
at wrapped.<computed> [as OrderWidgets] (node_modules/@devvit/public-api/devvit/Devvit.js:287:140)
at _Widget.reorder (node_modules/@devvit/public-api/apis/reddit/models/Widget.js:110:21)
at RedditAPIClient.reorderWidgets (node_modules/@devvit/public-api/apis/reddit/RedditAPIClient.js:1108:22) {
cause: [Error: 2 UNKNOWN: HTTP request to URL: https://oauth.reddit.com/r/BeachBrewsBoil/api/widget_order/section?raw_json=1 failed with error: Patch "https://oauth.reddit.com/r/BeachBrewsBoil/api/widget_order/section?raw_json=1": httpbp.ClientError: http status 400 Bad Request: {"fields": ["section"], "explanation": "that option is not valid", "message": "Bad Request", "reason": "INVALID_OPTION"}] {
code: 2,
details: 'HTTP request to URL: https://oauth.reddit.com/r/BeachBrewsBoil/api/widget_order/section?raw_json=1 failed with error: Patch "https://oauth.reddit.com/r/BeachBrewsBoil/api/widget_order/section?raw_json=1": httpbp.ClientError: http status 400 Bad Request: {"fields": ["section"], "explanation": "that option is not valid", "message": "Bad Request", "reason": "INVALID_OPTION"}',
metadata: _Metadata { internalRepr: Map(0) {}, options: {} }
}
}
Hey @Beach-Brews ,reorderWidgets is fixed in @next. Let us know if you still run into issues!