devvit icon indicating copy to clipboard operation
devvit copied to clipboard

Reddit API | Reorder Widgets Fails with Error

Open Beach-Brews opened this issue 10 months ago • 1 comments

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: {} }
  }
}

Beach-Brews avatar Feb 10 '25 09:02 Beach-Brews

Hey @Beach-Brews ,reorderWidgets is fixed in @next. Let us know if you still run into issues!

kay0tickay avatar Dec 04 '25 17:12 kay0tickay