Skip to main content
Version: 0.9

Class: Devvit

Devvit's non-class-based API for Bundle programs. Bundles are expected to reexport their Devvit singleton. Config state is retained statically so that when a Bundle exports their static instance of Devvit, its constructor can populate the passed in Config with that static state.

For the class API, see Actor.

Hierarchy

  • Actor

    Devvit

Table of contents

Constructors

Properties

Methods

Constructors

constructor

new Devvit(cfg)

Parameters

NameType
cfgConfig

Overrides

Actor.constructor

Properties

ContextAction

Static ContextAction: Object

Type declaration

NameType
onAction(cb: (args: ContextActionRequest, metadata?: Metadata) => Promise< { message?: string ; success?: boolean }>) => void
onGetActions(cb: (_?: Empty, metadata?: Metadata) => Promise< { actions?: { actionId?: string | undefined; name?: string | undefined; description?: string | undefined; contexts?: { post?: boolean | undefined; comment?: boolean | undefined; subreddit?: boolean | undefined; } | undefined; users?: { ...; } | undefined; userInput?: { ...; } | undefined; }[] }>) => void

KVStore

Static KVStore: Object

Type declaration

NameType
onDel(cb: (args: KeySet, metadata?: Metadata) => Promise< void>) => void
onGet(cb: (args: KeySet, metadata?: Metadata) => Promise< { messages?: { [x: string]: string | undefined; } }>) => void
onList(cb: (args: ListFilter, metadata?: Metadata) => Promise< { keys?: string[] }>) => void
onPut(cb: (args: MessageSet, metadata?: Metadata) => Promise< void>) => void

SchedulerHandler

Static SchedulerHandler: Object

Type declaration

NameType
onHandleScheduledAction(cb: (args: ScheduledAction, metadata?: Metadata) => Promise< void>) => void

Types

Static Types: Readonly< { ContextAction: BoundType< ContextAction> ; HTTP: BoundType< HTTP> ; KVStore: BoundType< KVStore> ; Logger: BoundType< Logger> ; OnAppInstall: BoundType< OnAppInstall> ; OnAppUpgrade: BoundType< OnAppUpgrade> ; OnCommentReport: BoundType< OnCommentReport> ; OnCommentSubmit: BoundType< OnCommentSubmit> ; OnCommentUpdate: BoundType< OnCommentUpdate> ; OnPostReport: BoundType< OnPostReport> ; OnPostSubmit: BoundType< OnPostSubmit> ; OnPostUpdate: BoundType< OnPostUpdate> ; OnSubredditSubscribe: BoundType< OnSubredditSubscribe> ; RedditAPI: { Flair: BoundType< Flair> ; LinksAndComments: BoundType< LinksAndComments> ; Listings: BoundType< Listings> ; ModNote: BoundType< ModNote> ; Moderation: BoundType< Moderation> ; NewModmail: BoundType< NewModmail> ; PrivateMessages: BoundType< PrivateMessages> ; Subreddits: BoundType< Subreddits> ; Users: BoundType< Users> ; Widgets: BoundType< Widgets> ; Wiki: BoundType< Wiki> } ; Scheduler: BoundType< Scheduler> ; SchedulerHandler: BoundType< SchedulerHandler> ; Timer: BoundType< Timer> ; UserConfigurable: BoundType< UserConfigurable> }>


UserConfigurable

Static UserConfigurable: Object

Type declaration

NameType
onHandleFormResponse(cb: (args: ConfigForm, metadata?: Metadata) => Promise< { messages?: string[] ; success?: boolean }>) => void
onRenderForm(cb: (_?: Empty, metadata?: Metadata) => Promise< { fields?: { fieldType?: ConfigFieldType | undefined; key?: string | undefined; prompt?: string | undefined; response?: string | undefined; }[] }>) => void

Methods

addAction

Static addAction(contextAction): typeof Devvit

Parameters

NameType
contextActionContextAction

Returns

typeof Devvit

Static addAction(contextAction): typeof Devvit

Parameters

NameType
contextActionMultiContextAction

Returns

typeof Devvit


addActions

Static addActions(contextActions): typeof Devvit

Parameters

NameType
contextActions(MultiContextAction | ContextAction)[]

Returns

typeof Devvit


addSchedulerHandler

Static addSchedulerHandler(schedulerHandler): typeof Devvit

Parameters

NameType
schedulerHandlerSchedulerHandler

Returns

typeof Devvit


addTrigger

Static addTrigger(config): typeof Devvit

Add a trigger handler that will be invoked when the given event happens in subreddit the in which the app is installed.

Example

import Devvit from '@devvit/public-api';
Devvit.addTrigger({
event: Devvit.Trigger.PostSubmit,
handler(postSubmitEvent) {
console.log('a new post was created!');
},
});

import Devvit from '@devvit/public-api';
Devvit.addTrigger({
events: [Devvit.Trigger.PostSubmit, Devvit.Trigger.PostReport],
handler(event) {
if (event.type === Devvit.Trigger.PostSubmit) {
console.log('a new post was created!');
} else if (event.type === Devvit.Trigger.PostReport) {
console.log('a post was reported!');
}
},
});

Parameters

NameTypeDescription
configPostSubmitConfig{Devvit.TriggerConfig} the configuration of the added trigger

Returns

typeof Devvit

Static addTrigger(config): typeof Devvit

Parameters

NameType
configPostUpdateConfig

Returns

typeof Devvit

Static addTrigger(config): typeof Devvit

Parameters

NameType
configPostReportConfig

Returns

typeof Devvit

Static addTrigger(config): typeof Devvit

Parameters

NameType
configCommentSubmitConfig

Returns

typeof Devvit

Static addTrigger(config): typeof Devvit

Parameters

NameType
configCommentUpdateConfig

Returns

typeof Devvit

Static addTrigger(config): typeof Devvit

Parameters

NameType
configCommentReportConfig

Returns

typeof Devvit

Static addTrigger(config): typeof Devvit

Parameters

NameType
configSubredditSubscribeConfig

Returns

typeof Devvit

Static addTrigger(config): typeof Devvit

Parameters

NameType
configAppInstallConfig

Returns

typeof Devvit

Static addTrigger(config): typeof Devvit

Parameters

NameType
configAppUpgradeConfig

Returns

typeof Devvit

Static addTrigger(config): typeof Devvit

Parameters

NameType
configMultiTriggerConfig

Returns

typeof Devvit


getApiClient

Static getApiClient< T>(type): T

Type parameters

NameType
Textends ActorType

Parameters

NameType
typeBoundType< T>

Returns

T


onAppInstall

Static onAppInstall(cb): void

Parameters

NameType
cb(args: AppInstall, metadata?: Metadata) => Promise< {}>

Returns

void


onAppUpgrade

Static onAppUpgrade(cb): void

Parameters

NameType
cb(args: AppUpgrade, metadata?: Metadata) => Promise< {}>

Returns

void


onCommentReport

Static onCommentReport(cb): void

Parameters

NameType
cb(args: CommentReport, metadata?: Metadata) => Promise< {}>

Returns

void


onCommentSubmit

Static onCommentSubmit(cb): void

Parameters

NameType
cb(args: CommentSubmit, metadata?: Metadata) => Promise< {}>

Returns

void


onCommentUpdate

Static onCommentUpdate(cb): void

Parameters

NameType
cb(args: CommentUpdate, metadata?: Metadata) => Promise< {}>

Returns

void


onPostReport

Static onPostReport(cb): void

Parameters

NameType
cb(args: PostReport, metadata?: Metadata) => Promise< {}>

Returns

void


onPostSubmit

Static onPostSubmit(cb): void

Parameters

NameType
cb(args: PostSubmit, metadata?: Metadata) => Promise< {}>

Returns

void


onPostUpdate

Static onPostUpdate(cb): void

Parameters

NameType
cb(args: PostUpdate, metadata?: Metadata) => Promise< {}>

Returns

void


onSubredditSubscribe

Static onSubredditSubscribe(cb): void

Parameters

NameType
cb(args: SubredditSubscribe, metadata?: Metadata) => Promise< {}>

Returns

void


use

Static use< T>(type, opts?): T

Type parameters

NameType
Textends ActorType

Parameters

NameTypeDescription
typeBoundType< T>-
opts?Object-
opts.name?stringLimit resolution to a Bundle or plugins (PLUGIN_APP_NAME). Eg, com.devvit.example/foo.
opts.owner?stringLimit resolution to owner. Eg, com.reddit.
opts.typeName?stringLimit resolution to type. No slashes. Eg, "devvit.plugin.logger.Logger". See Definition.fullName.
opts.versions?stringLimit resolution to versions. Eg, ">=0" or "1.0.0".

Returns

T