poptart_bluesky_moderation 0.1.0 copy "poptart_bluesky_moderation: ^0.1.0" to clipboard
poptart_bluesky_moderation: ^0.1.0 copied to clipboard

High-level Bluesky moderation helpers for Poptart lexicon models.

example/main.dart

import 'package:poptart_bluesky_moderation/poptart_bluesky_moderation.dart';
import 'package:poptart_lex/app/bsky/actor/defs/profile_view_basic.dart';
import 'package:poptart_lex/app/bsky/actor/defs/viewer_state.dart';
import 'package:poptart_lex/com/atproto/label/defs.dart';

void main() {
  final profile = ProfileViewBasic(
    did: 'did:plc:alice',
    handle: 'alice.test',
    displayName: 'Alice',
    viewer: const ViewerState(),
    labels: [
      Label(
        src: 'did:plc:alice',
        uri: 'at://did:plc:alice/app.bsky.actor.profile/self',
        val: 'porn',
        cts: DateTime.utc(2026),
      ),
    ],
  );

  final decision = moderateProfile(
    ModerationSubjectProfile.profileViewBasic(data: profile),
    const ModerationOpts(
      userDid: 'did:plc:bob',
      prefs: ModerationPrefs(
        adultContentEnabled: true,
        labels: {'porn': LabelPreference.hide},
        labelers: [],
        mutedWords: [],
        hiddenPosts: [],
      ),
    ),
  );

  final ui = decision.getUI(ModerationBehaviorContext.avatar);
  assert(ui.blur);
  assert(ui.alert);
}