renderTip function
群提示的文字(《消息/3.接口设计》第 12.3 节的各种 kind)。self 为本人时显示“你”。
Implementation
String renderTip(DRObject message, {required NameOf nameOf, String? self, DRLocale locale = zhCN}) {
final l = locale;
final b = _body(message);
String name(String u) => self != null && u == self ? l.you : nameOf(u);
final operator = b['operator'] is String ? name(b['operator']! as String) : '';
String fill(String key, Map<String, String> values) => formatTemplate(_t(l.tip, key), values);
final hasOperator = b['operator'] is String && (b['operator']! as String).isNotEmpty;
switch (b['kind']) {
case 'group_created':
return fill('group_created', {'operator': operator});
case 'members_joined':
final members = _names(b['members'], b['joined_count'], name, l);
if (!hasOperator) return fill('members_joined', {'members': members});
if (b['joined_via'] == 'link') return fill('members_joined_link', {'members': members, 'operator': operator});
return fill('members_joined_invited', {'members': members, 'operator': operator});
case 'members_left':
return fill('members_left', {'members': _names(b['members'], b['removed_count'], name, l)});
case 'members_removed':
final members = _names(b['members'], b['removed_count'], name, l);
return hasOperator ? fill('members_removed', {'members': members, 'operator': operator}) : fill('members_removed_system', {'members': members});
case 'group_renamed':
return fill('group_renamed', {'operator': operator, 'name': '${b['name'] ?? ''}'});
case 'announcement_updated':
return fill('announcement_updated', {'operator': operator});
case 'owner_changed':
return fill('owner_changed', {'owner': b['owner'] is String ? name(b['owner']! as String) : l.deletedUser});
case 'mute_all_changed':
return fill(b['enabled'] == true ? 'mute_all_on' : 'mute_all_off', {'operator': operator});
case 'group_status_changed':
return _t(l.tip, b['status'] == 'disabled' ? 'group_disabled' : 'group_enabled');
case 'group_dismissed':
return _t(l.tip, 'group_dismissed');
default:
return _t(l.tip, 'unknown');
}
}