getModerationPrefs method
Implementation
ModerationPrefs getModerationPrefs({
List<String> appLabelers = const [_kBskyLabelerDid],
}) {
bool adultContentEnabled = false;
final labels = <String, LabelPreference>{};
final mutedWords = <MutedWord>[];
final hiddenPosts = <AtUri>[];
final labelers = <Map<String, dynamic>>[];
final labelPrefs = <ContentLabelPref>[];
for (final pref in preferences) {
if (pref.isAdultContentPref) {
adultContentEnabled = pref.adultContentPref.enabled;
} else if (pref.isMutedWordsPref) {
mutedWords.addAll(pref.mutedWordsPref.items);
} else if (pref.isHiddenPostsPref) {
hiddenPosts.addAll(pref.hiddenPostsPref.items);
} else if (pref.isContentLabelPref) {
labelPrefs.add(pref.contentLabelPref);
} else if (pref.isLabelersPref) {
labelers.addAll(pref.labelersPref.labelers.map(
(e) => {'did': e.did, 'labels': <String, LabelPreference>{}},
));
}
}
for (final labelPref in labelPrefs) {
final pref = _getModerationLabelPreference(labelPref.visibility);
if (labelPref.labelerDid != null && labelers.isNotEmpty) {
final labeler =
labelers.where((e) => e['did'] == labelPref.labelerDid).firstOrNull;
if (labeler != null && labeler.isNotEmpty) {
labeler['labels'][labelPref.label] = pref;
}
} else {
labels[_getModerationLabel(labelPref.label)] = pref;
}
}
return ModerationPrefs(
adultContentEnabled: adultContentEnabled,
labels: {
...kDefaultLabelSettings.map((k, v) => MapEntry(k.value, v)),
...labels,
},
labelers: [
...appLabelers
.map((e) => {'did': e, 'labels': <String, LabelPreference>{}}),
...labelers,
]
.map(
(e) => ModerationPrefsLabeler(
did: e['did'],
labels: e['labels'],
),
)
.toList(),
mutedWords: mutedWords,
hiddenPosts: hiddenPosts,
);
}