Content Options
Content Options let a community administrator disable specific creation surfaces — pictures on posts, comments, or replies, and polls on posts — independently per content type. The SDK reads this configuration automatically from the backend and hides the relevant UI affordances. No code change is required from app integrators — the change is purely backend-side.
What is controlled
The following creation affordances can be disabled individually through the backend API key configuration:
- Post pictures (
post.enablePictures = false) — hides the picture-add button in the post composer. - Post polls (
post.enablePolls = false) — hides the poll-creation button in the post composer and the poll incentive button on the current-user profile. - Comment pictures (
comment.enablePictures = false) — hides the picture-add button in the comment input. - Reply pictures (
reply.enablePictures = false) — hides the picture-add button in the reply input. Comment and reply picture gates are independent — each can be set separately.
Bridge Share / prefilled-post images (opened via deep link or the create-post initial screen) are not gated by post.enablePictures. They use a separate authorization path.
Default behavior
All flags default to true. A community that does not configure Content Options in its backend keeps today's behavior exactly — nothing is hidden.
Platform details
- Android
- iOS
- Flutter
- React Native
- Unity
The SDK reads ContentOptions from CommunityConfig.contentOptions, populated automatically from the backend configuration at startup and on each config refresh. No SDK code is required — the UI updates reactively.
The ContentOptions type structure is available for inspection if you need to observe content options in your own UI:
import com.octopuscommunity.sdk.domain.model.CommunityConfig
// ContentOptions is read from CommunityConfig.contentOptions — not constructed by app code.
val options: CommunityConfig.ContentOptions = communityConfig.contentOptions
// Post options
options.post.enablePictures // Boolean — false hides the picture-add button in the post composer
options.post.enablePolls // Boolean — false hides the poll-creation button
// Comment options
options.comment.enablePictures // Boolean — false hides the picture-add button in comments
// Reply options
options.reply.enablePictures // Boolean — false hides the picture-add button in replies
// Absent backend config defaults to all flags enabled — CommunityConfig.ContentOptions()
The SDK reads ContentOptions from CommunityConfig.contentOptions, populated automatically from the backend configuration at startup and on each config refresh. No SDK code is required — the UI updates reactively.
The ContentOptions type structure is available for inspection if you need to observe content options in your own UI:
import Octopus
// ContentOptions is read from CommunityConfig.contentOptions — not constructed by app code.
let options: ContentOptions = communityConfig.contentOptions
// Post options
options.post.enablePictures // Bool — false hides the picture-add button in the post composer
options.post.enablePolls // Bool — false hides the poll-creation button
// Comment options
options.comment.enablePictures // Bool — false hides the picture-add button in comments
// Reply options
options.reply.enablePictures // Bool — false hides the picture-add button in replies
// Absent backend config defaults to all flags enabled
ContentOptions.allEnabled
// equivalent to:
// ContentOptions(
// post: .init(enablePictures: true, enablePolls: true),
// comment: .init(enablePictures: true),
// reply: .init(enablePictures: true)
// )
Supported. This behavior is driven by the community configuration and rendered by the embedded native (Android/iOS) UI — no additional wrapper API is required, and there is no ContentOptions type to import from Dart.
Supported. This behavior is driven by the community configuration and rendered by the embedded native (Android/iOS) UI — no additional wrapper API is required, and there is no ContentOptions type to import from TypeScript.
Content Options are not yet available on Unity.