feat: pm: share video

Closes #693

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-04-25 11:52:12 +08:00
parent 738cd61825
commit afe812e2be
33 changed files with 7972 additions and 111 deletions

View File

@@ -3,10 +3,11 @@ import 'package:flutter/material.dart';
/// https://stackoverflow.com/a/76605401
class SelfSizedHorizontalList extends StatefulWidget {
final Widget Function(int) childBuilder;
final Widget Function(int index) childBuilder;
final int itemCount;
final double gapSize;
final EdgeInsetsGeometry? padding;
final ScrollController? controller;
const SelfSizedHorizontalList({
super.key,
@@ -14,6 +15,7 @@ class SelfSizedHorizontalList extends StatefulWidget {
required this.itemCount,
this.gapSize = 5,
this.padding,
this.controller,
});
@override
@@ -50,6 +52,7 @@ class _SelfSizedHorizontalListState extends State<SelfSizedHorizontalList> {
return SizedBox(
height: height,
child: ListView.separated(
controller: widget.controller,
padding: widget.padding,
scrollDirection: Axis.horizontal,
itemCount: widget.itemCount,

View File

@@ -10,6 +10,8 @@ import 'package:PiliPlus/grpc/app/show/popular/v1/popular.pb.dart';
import 'package:PiliPlus/grpc/device/device.pb.dart';
import 'package:PiliPlus/grpc/dm/v1/dm.pb.dart';
import 'package:PiliPlus/grpc/fawkes/fawkes.pb.dart';
import 'package:PiliPlus/grpc/im/interfaces/v1/im.pb.dart';
import 'package:PiliPlus/grpc/im/type/im.pb.dart';
import 'package:PiliPlus/grpc/locale/locale.pb.dart';
import 'package:PiliPlus/grpc/metadata/metadata.pb.dart';
import 'package:PiliPlus/grpc/network/network.pb.dart' as network;
@@ -23,6 +25,7 @@ import 'package:archive/archive.dart';
import 'package:dio/dio.dart';
import 'package:fixnum/src/int64.dart';
import 'package:protobuf/protobuf.dart' show GeneratedMessage;
import 'package:uuid/uuid.dart';
class GrpcUrl {
static const playerOnline =
@@ -37,6 +40,8 @@ class GrpcUrl {
static const dynSpace = '/bilibili.app.dynamic.v2.Dynamic/DynSpace';
static const dynRed = '/bilibili.app.dynamic.v1.Dynamic/DynRed';
static const dmSegMobile = '/bilibili.community.service.dm.v1.DM/DmSegMobile';
static const sendMsg = '/bilibili.im.interface.v1.ImInterface/SendMsg';
static const shareList = '/bilibili.im.interface.v1.ImInterface/ShareList';
}
class GrpcRepo {
@@ -306,4 +311,39 @@ class GrpcRepo {
oid: Int64(cid), segmentIndex: Int64(segmentIndex), type: type),
DmSegMobileReply.fromBuffer);
}
static Future sendMsg({
required int senderUid,
required int receiverId,
int receiverType = 1,
required String content,
MsgType msgType = MsgType.EN_MSG_TYPE_TEXT,
}) async {
final devId = Uuid().v4();
return await _request(
GrpcUrl.sendMsg,
ReqSendMsg(
msg: Msg(
senderUid: Int64(senderUid),
receiverType: RecverType.EN_RECVER_TYPE_PEER,
receiverId: Int64(receiverId),
msgType: msgType,
content: content,
timestamp: Int64(DateTime.now().millisecondsSinceEpoch ~/ 1000),
msgStatus: 0,
newFaceVersion: 1,
),
devId: devId,
),
RspSendMsg.fromBuffer,
);
}
static Future shareList({int size = 10}) async {
return await _request(
GrpcUrl.shareList,
ReqShareList(size: size),
RspShareList.fromBuffer,
);
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,76 @@
//
// Generated code. Do not modify.
// source: bilibili/im/interfaces/v1/im.proto
//
// @dart = 3.3
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
// ignore_for_file: constant_identifier_names, library_prefixes
// ignore_for_file: non_constant_identifier_names, prefer_final_fields
// ignore_for_file: unnecessary_import, unnecessary_this, unused_import
import 'dart:core' as $core;
import 'package:protobuf/protobuf.dart' as $pb;
class ENUM_FOLD extends $pb.ProtobufEnum {
static const ENUM_FOLD FOLD_NO = ENUM_FOLD._(0, _omitEnumNames ? '' : 'FOLD_NO');
static const ENUM_FOLD FOLD_YES = ENUM_FOLD._(1, _omitEnumNames ? '' : 'FOLD_YES');
static const ENUM_FOLD FOLD_UNKNOWN = ENUM_FOLD._(2, _omitEnumNames ? '' : 'FOLD_UNKNOWN');
static const $core.List<ENUM_FOLD> values = <ENUM_FOLD> [
FOLD_NO,
FOLD_YES,
FOLD_UNKNOWN,
];
static final $core.Map<$core.int, ENUM_FOLD> _byValue = $pb.ProtobufEnum.initByValue(values);
static ENUM_FOLD? valueOf($core.int value) => _byValue[value];
const ENUM_FOLD._(super.v, super.n);
}
class ENUM_UNREAD_TYPE extends $pb.ProtobufEnum {
static const ENUM_UNREAD_TYPE UNREAD_TYPE_ALL = ENUM_UNREAD_TYPE._(0, _omitEnumNames ? '' : 'UNREAD_TYPE_ALL');
static const ENUM_UNREAD_TYPE UNREAD_TYPE_FOLLOW = ENUM_UNREAD_TYPE._(1, _omitEnumNames ? '' : 'UNREAD_TYPE_FOLLOW');
static const ENUM_UNREAD_TYPE UNREAD_TYPE_UNFOLLOW = ENUM_UNREAD_TYPE._(2, _omitEnumNames ? '' : 'UNREAD_TYPE_UNFOLLOW');
static const ENUM_UNREAD_TYPE UNREAD_TYPE_DUSTBIN = ENUM_UNREAD_TYPE._(3, _omitEnumNames ? '' : 'UNREAD_TYPE_DUSTBIN');
static const $core.List<ENUM_UNREAD_TYPE> values = <ENUM_UNREAD_TYPE> [
UNREAD_TYPE_ALL,
UNREAD_TYPE_FOLLOW,
UNREAD_TYPE_UNFOLLOW,
UNREAD_TYPE_DUSTBIN,
];
static final $core.Map<$core.int, ENUM_UNREAD_TYPE> _byValue = $pb.ProtobufEnum.initByValue(values);
static ENUM_UNREAD_TYPE? valueOf($core.int value) => _byValue[value];
const ENUM_UNREAD_TYPE._(super.v, super.n);
}
class SESSION_TYPE extends $pb.ProtobufEnum {
static const SESSION_TYPE UNKNOWN = SESSION_TYPE._(0, _omitEnumNames ? '' : 'UNKNOWN');
static const SESSION_TYPE UN_FOLD_SESSION = SESSION_TYPE._(1, _omitEnumNames ? '' : 'UN_FOLD_SESSION');
static const SESSION_TYPE UN_FOLLOW_SINGLE_SESSION = SESSION_TYPE._(2, _omitEnumNames ? '' : 'UN_FOLLOW_SINGLE_SESSION');
static const SESSION_TYPE MY_GROUP_SESSION = SESSION_TYPE._(3, _omitEnumNames ? '' : 'MY_GROUP_SESSION');
static const SESSION_TYPE ALL_SESSION = SESSION_TYPE._(4, _omitEnumNames ? '' : 'ALL_SESSION');
static const SESSION_TYPE DUSTBIN_SESSION = SESSION_TYPE._(5, _omitEnumNames ? '' : 'DUSTBIN_SESSION');
static const $core.List<SESSION_TYPE> values = <SESSION_TYPE> [
UNKNOWN,
UN_FOLD_SESSION,
UN_FOLLOW_SINGLE_SESSION,
MY_GROUP_SESSION,
ALL_SESSION,
DUSTBIN_SESSION,
];
static final $core.Map<$core.int, SESSION_TYPE> _byValue = $pb.ProtobufEnum.initByValue(values);
static SESSION_TYPE? valueOf($core.int value) => _byValue[value];
const SESSION_TYPE._(super.v, super.n);
}
const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names');

View File

@@ -0,0 +1,867 @@
//
// Generated code. Do not modify.
// source: bilibili/im/interfaces/v1/im.proto
//
// @dart = 3.3
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
// ignore_for_file: constant_identifier_names, library_prefixes
// ignore_for_file: non_constant_identifier_names, prefer_final_fields
// ignore_for_file: unnecessary_import, unnecessary_this, unused_import
import 'dart:convert' as $convert;
import 'dart:core' as $core;
import 'dart:typed_data' as $typed_data;
@$core.Deprecated('Use eNUM_FOLDDescriptor instead')
const ENUM_FOLD$json = {
'1': 'ENUM_FOLD',
'2': [
{'1': 'FOLD_NO', '2': 0},
{'1': 'FOLD_YES', '2': 1},
{'1': 'FOLD_UNKNOWN', '2': 2},
],
};
/// Descriptor for `ENUM_FOLD`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List eNUM_FOLDDescriptor = $convert.base64Decode(
'CglFTlVNX0ZPTEQSCwoHRk9MRF9OTxAAEgwKCEZPTERfWUVTEAESEAoMRk9MRF9VTktOT1dOEA'
'I=');
@$core.Deprecated('Use eNUM_UNREAD_TYPEDescriptor instead')
const ENUM_UNREAD_TYPE$json = {
'1': 'ENUM_UNREAD_TYPE',
'2': [
{'1': 'UNREAD_TYPE_ALL', '2': 0},
{'1': 'UNREAD_TYPE_FOLLOW', '2': 1},
{'1': 'UNREAD_TYPE_UNFOLLOW', '2': 2},
{'1': 'UNREAD_TYPE_DUSTBIN', '2': 3},
],
};
/// Descriptor for `ENUM_UNREAD_TYPE`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List eNUM_UNREAD_TYPEDescriptor = $convert.base64Decode(
'ChBFTlVNX1VOUkVBRF9UWVBFEhMKD1VOUkVBRF9UWVBFX0FMTBAAEhYKElVOUkVBRF9UWVBFX0'
'ZPTExPVxABEhgKFFVOUkVBRF9UWVBFX1VORk9MTE9XEAISFwoTVU5SRUFEX1RZUEVfRFVTVEJJ'
'ThAD');
@$core.Deprecated('Use sESSION_TYPEDescriptor instead')
const SESSION_TYPE$json = {
'1': 'SESSION_TYPE',
'2': [
{'1': 'UNKNOWN', '2': 0},
{'1': 'UN_FOLD_SESSION', '2': 1},
{'1': 'UN_FOLLOW_SINGLE_SESSION', '2': 2},
{'1': 'MY_GROUP_SESSION', '2': 3},
{'1': 'ALL_SESSION', '2': 4},
{'1': 'DUSTBIN_SESSION', '2': 5},
],
};
/// Descriptor for `SESSION_TYPE`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List sESSION_TYPEDescriptor = $convert.base64Decode(
'CgxTRVNTSU9OX1RZUEUSCwoHVU5LTk9XThAAEhMKD1VOX0ZPTERfU0VTU0lPThABEhwKGFVOX0'
'ZPTExPV19TSU5HTEVfU0VTU0lPThACEhQKEE1ZX0dST1VQX1NFU1NJT04QAxIPCgtBTExfU0VT'
'U0lPThAEEhMKD0RVU1RCSU5fU0VTU0lPThAF');
@$core.Deprecated('Use dummyReqDescriptor instead')
const DummyReq$json = {
'1': 'DummyReq',
'2': [
{'1': 'idl', '3': 1, '4': 1, '5': 13, '10': 'idl'},
],
};
/// Descriptor for `DummyReq`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List dummyReqDescriptor = $convert.base64Decode(
'CghEdW1teVJlcRIQCgNpZGwYASABKA1SA2lkbA==');
@$core.Deprecated('Use dummyRspDescriptor instead')
const DummyRsp$json = {
'1': 'DummyRsp',
'9': [
{'1': 1, '2': 2},
],
};
/// Descriptor for `DummyRsp`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List dummyRspDescriptor = $convert.base64Decode(
'CghEdW1teVJzcEoECAEQAg==');
@$core.Deprecated('Use emotionInfoDescriptor instead')
const EmotionInfo$json = {
'1': 'EmotionInfo',
'2': [
{'1': 'text', '3': 1, '4': 1, '5': 9, '10': 'text'},
{'1': 'url', '3': 2, '4': 1, '5': 9, '10': 'url'},
{'1': 'size', '3': 3, '4': 1, '5': 5, '10': 'size'},
{'1': 'gif_url', '3': 4, '4': 1, '5': 9, '10': 'gifUrl'},
],
};
/// Descriptor for `EmotionInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List emotionInfoDescriptor = $convert.base64Decode(
'CgtFbW90aW9uSW5mbxISCgR0ZXh0GAEgASgJUgR0ZXh0EhAKA3VybBgCIAEoCVIDdXJsEhIKBH'
'NpemUYAyABKAVSBHNpemUSFwoHZ2lmX3VybBgEIAEoCVIGZ2lmVXJs');
@$core.Deprecated('Use msgDetailDescriptor instead')
const MsgDetail$json = {
'1': 'MsgDetail',
'2': [
{'1': 'msg_key', '3': 1, '4': 1, '5': 3, '10': 'msgKey'},
{'1': 'seqno', '3': 2, '4': 1, '5': 3, '10': 'seqno'},
],
};
/// Descriptor for `MsgDetail`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List msgDetailDescriptor = $convert.base64Decode(
'CglNc2dEZXRhaWwSFwoHbXNnX2tleRgBIAEoA1IGbXNnS2V5EhQKBXNlcW5vGAIgASgDUgVzZX'
'Fubw==');
@$core.Deprecated('Use msgFeedUnreadRspDescriptor instead')
const MsgFeedUnreadRsp$json = {
'1': 'MsgFeedUnreadRsp',
'2': [
{'1': 'unread', '3': 1, '4': 3, '5': 11, '6': '.bilibili.im.interface.v1.MsgFeedUnreadRsp.UnreadEntry', '10': 'unread'},
],
'3': [MsgFeedUnreadRsp_UnreadEntry$json],
};
@$core.Deprecated('Use msgFeedUnreadRspDescriptor instead')
const MsgFeedUnreadRsp_UnreadEntry$json = {
'1': 'UnreadEntry',
'2': [
{'1': 'key', '3': 1, '4': 1, '5': 9, '10': 'key'},
{'1': 'value', '3': 2, '4': 1, '5': 3, '10': 'value'},
],
'7': {'7': true},
};
/// Descriptor for `MsgFeedUnreadRsp`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List msgFeedUnreadRspDescriptor = $convert.base64Decode(
'ChBNc2dGZWVkVW5yZWFkUnNwEk4KBnVucmVhZBgBIAMoCzI2LmJpbGliaWxpLmltLmludGVyZm'
'FjZS52MS5Nc2dGZWVkVW5yZWFkUnNwLlVucmVhZEVudHJ5UgZ1bnJlYWQaOQoLVW5yZWFkRW50'
'cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKANSBXZhbHVlOgI4AQ==');
@$core.Deprecated('Use reqAckAssisMsgDescriptor instead')
const ReqAckAssisMsg$json = {
'1': 'ReqAckAssisMsg',
'2': [
{'1': 'ack_seqno', '3': 1, '4': 1, '5': 4, '10': 'ackSeqno'},
],
};
/// Descriptor for `ReqAckAssisMsg`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqAckAssisMsgDescriptor = $convert.base64Decode(
'Cg5SZXFBY2tBc3Npc01zZxIbCglhY2tfc2Vxbm8YASABKARSCGFja1NlcW5v');
@$core.Deprecated('Use reqAckSessionsDescriptor instead')
const ReqAckSessions$json = {
'1': 'ReqAckSessions',
'2': [
{'1': 'begin_ts', '3': 1, '4': 1, '5': 4, '10': 'beginTs'},
{'1': 'end_ts', '3': 2, '4': 1, '5': 13, '10': 'endTs'},
{'1': 'size', '3': 3, '4': 1, '5': 13, '10': 'size'},
],
};
/// Descriptor for `ReqAckSessions`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqAckSessionsDescriptor = $convert.base64Decode(
'Cg5SZXFBY2tTZXNzaW9ucxIZCghiZWdpbl90cxgBIAEoBFIHYmVnaW5UcxIVCgZlbmRfdHMYAi'
'ABKA1SBWVuZFRzEhIKBHNpemUYAyABKA1SBHNpemU=');
@$core.Deprecated('Use reqBatRmSessDescriptor instead')
const ReqBatRmSess$json = {
'1': 'ReqBatRmSess',
};
/// Descriptor for `ReqBatRmSess`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqBatRmSessDescriptor = $convert.base64Decode(
'CgxSZXFCYXRSbVNlc3M=');
@$core.Deprecated('Use reqCloseClearUnreadUIDescriptor instead')
const ReqCloseClearUnreadUI$json = {
'1': 'ReqCloseClearUnreadUI',
};
/// Descriptor for `ReqCloseClearUnreadUI`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqCloseClearUnreadUIDescriptor = $convert.base64Decode(
'ChVSZXFDbG9zZUNsZWFyVW5yZWFkVUk=');
@$core.Deprecated('Use reqGetMsgDescriptor instead')
const ReqGetMsg$json = {
'1': 'ReqGetMsg',
'2': [
{'1': 'talker_id', '3': 1, '4': 1, '5': 3, '10': 'talkerId'},
{'1': 'session_type', '3': 2, '4': 1, '5': 5, '10': 'sessionType'},
{'1': 'msg_detail', '3': 3, '4': 3, '5': 11, '6': '.bilibili.im.interface.v1.MsgDetail', '10': 'msgDetail'},
],
};
/// Descriptor for `ReqGetMsg`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqGetMsgDescriptor = $convert.base64Decode(
'CglSZXFHZXRNc2cSGwoJdGFsa2VyX2lkGAEgASgDUgh0YWxrZXJJZBIhCgxzZXNzaW9uX3R5cG'
'UYAiABKAVSC3Nlc3Npb25UeXBlEkIKCm1zZ19kZXRhaWwYAyADKAsyIy5iaWxpYmlsaS5pbS5p'
'bnRlcmZhY2UudjEuTXNnRGV0YWlsUgltc2dEZXRhaWw=');
@$core.Deprecated('Use reqGetSessionsDescriptor instead')
const ReqGetSessions$json = {
'1': 'ReqGetSessions',
'2': [
{'1': 'begin_ts', '3': 1, '4': 1, '5': 4, '10': 'beginTs'},
{'1': 'end_ts', '3': 2, '4': 1, '5': 4, '10': 'endTs'},
{'1': 'size', '3': 3, '4': 1, '5': 13, '10': 'size'},
{'1': 'session_type', '3': 4, '4': 1, '5': 13, '10': 'sessionType'},
{'1': 'unfollow_fold', '3': 5, '4': 1, '5': 13, '10': 'unfollowFold'},
{'1': 'group_fold', '3': 6, '4': 1, '5': 13, '10': 'groupFold'},
{'1': 'sort_rule', '3': 7, '4': 1, '5': 13, '10': 'sortRule'},
{'1': 'teenager_mode', '3': 8, '4': 1, '5': 13, '10': 'teenagerMode'},
{'1': 'lessons_mode', '3': 9, '4': 1, '5': 13, '10': 'lessonsMode'},
],
};
/// Descriptor for `ReqGetSessions`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqGetSessionsDescriptor = $convert.base64Decode(
'Cg5SZXFHZXRTZXNzaW9ucxIZCghiZWdpbl90cxgBIAEoBFIHYmVnaW5UcxIVCgZlbmRfdHMYAi'
'ABKARSBWVuZFRzEhIKBHNpemUYAyABKA1SBHNpemUSIQoMc2Vzc2lvbl90eXBlGAQgASgNUgtz'
'ZXNzaW9uVHlwZRIjCg11bmZvbGxvd19mb2xkGAUgASgNUgx1bmZvbGxvd0ZvbGQSHQoKZ3JvdX'
'BfZm9sZBgGIAEoDVIJZ3JvdXBGb2xkEhsKCXNvcnRfcnVsZRgHIAEoDVIIc29ydFJ1bGUSIwoN'
'dGVlbmFnZXJfbW9kZRgIIAEoDVIMdGVlbmFnZXJNb2RlEiEKDGxlc3NvbnNfbW9kZRgJIAEoDV'
'ILbGVzc29uc01vZGU=');
@$core.Deprecated('Use reqGetSpecificSessionsDescriptor instead')
const ReqGetSpecificSessions$json = {
'1': 'ReqGetSpecificSessions',
'2': [
{'1': 'talker_sessions', '3': 1, '4': 3, '5': 11, '6': '.bilibili.im.interface.v1.SimpleSession', '10': 'talkerSessions'},
],
};
/// Descriptor for `ReqGetSpecificSessions`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqGetSpecificSessionsDescriptor = $convert.base64Decode(
'ChZSZXFHZXRTcGVjaWZpY1Nlc3Npb25zElAKD3RhbGtlcl9zZXNzaW9ucxgBIAMoCzInLmJpbG'
'liaWxpLmltLmludGVyZmFjZS52MS5TaW1wbGVTZXNzaW9uUg50YWxrZXJTZXNzaW9ucw==');
@$core.Deprecated('Use reqGroupAssisMsgDescriptor instead')
const ReqGroupAssisMsg$json = {
'1': 'ReqGroupAssisMsg',
'2': [
{'1': 'client_seqno', '3': 1, '4': 1, '5': 4, '10': 'clientSeqno'},
{'1': 'size', '3': 2, '4': 1, '5': 13, '10': 'size'},
],
};
/// Descriptor for `ReqGroupAssisMsg`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqGroupAssisMsgDescriptor = $convert.base64Decode(
'ChBSZXFHcm91cEFzc2lzTXNnEiEKDGNsaWVudF9zZXFubxgBIAEoBFILY2xpZW50U2Vxbm8SEg'
'oEc2l6ZRgCIAEoDVIEc2l6ZQ==');
@$core.Deprecated('Use reqLiveInfoDescriptor instead')
const ReqLiveInfo$json = {
'1': 'ReqLiveInfo',
'2': [
{'1': 'uid', '3': 1, '4': 1, '5': 3, '10': 'uid'},
{'1': 'talker_id', '3': 2, '4': 1, '5': 3, '10': 'talkerId'},
],
};
/// Descriptor for `ReqLiveInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqLiveInfoDescriptor = $convert.base64Decode(
'CgtSZXFMaXZlSW5mbxIQCgN1aWQYASABKANSA3VpZBIbCgl0YWxrZXJfaWQYAiABKANSCHRhbG'
'tlcklk');
@$core.Deprecated('Use reqNewSessionsDescriptor instead')
const ReqNewSessions$json = {
'1': 'ReqNewSessions',
'2': [
{'1': 'begin_ts', '3': 1, '4': 1, '5': 4, '10': 'beginTs'},
{'1': 'size', '3': 2, '4': 1, '5': 13, '10': 'size'},
{'1': 'teenager_mode', '3': 3, '4': 1, '5': 13, '10': 'teenagerMode'},
{'1': 'lessons_mode', '3': 4, '4': 1, '5': 13, '10': 'lessonsMode'},
],
};
/// Descriptor for `ReqNewSessions`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqNewSessionsDescriptor = $convert.base64Decode(
'Cg5SZXFOZXdTZXNzaW9ucxIZCghiZWdpbl90cxgBIAEoBFIHYmVnaW5UcxISCgRzaXplGAIgAS'
'gNUgRzaXplEiMKDXRlZW5hZ2VyX21vZGUYAyABKA1SDHRlZW5hZ2VyTW9kZRIhCgxsZXNzb25z'
'X21vZGUYBCABKA1SC2xlc3NvbnNNb2Rl');
@$core.Deprecated('Use reqRelationSyncDescriptor instead')
const ReqRelationSync$json = {
'1': 'ReqRelationSync',
'2': [
{'1': 'client_relation_oplog_seqno', '3': 1, '4': 1, '5': 4, '10': 'clientRelationOplogSeqno'},
],
};
/// Descriptor for `ReqRelationSync`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqRelationSyncDescriptor = $convert.base64Decode(
'Cg9SZXFSZWxhdGlvblN5bmMSPQobY2xpZW50X3JlbGF0aW9uX29wbG9nX3NlcW5vGAEgASgEUh'
'hjbGllbnRSZWxhdGlvbk9wbG9nU2Vxbm8=');
@$core.Deprecated('Use reqRemoveSessionDescriptor instead')
const ReqRemoveSession$json = {
'1': 'ReqRemoveSession',
'2': [
{'1': 'talker_id', '3': 1, '4': 1, '5': 4, '10': 'talkerId'},
{'1': 'session_type', '3': 2, '4': 1, '5': 13, '10': 'sessionType'},
],
};
/// Descriptor for `ReqRemoveSession`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqRemoveSessionDescriptor = $convert.base64Decode(
'ChBSZXFSZW1vdmVTZXNzaW9uEhsKCXRhbGtlcl9pZBgBIAEoBFIIdGFsa2VySWQSIQoMc2Vzc2'
'lvbl90eXBlGAIgASgNUgtzZXNzaW9uVHlwZQ==');
@$core.Deprecated('Use reqSendMsgDescriptor instead')
const ReqSendMsg$json = {
'1': 'ReqSendMsg',
'2': [
{'1': 'msg', '3': 1, '4': 1, '5': 11, '6': '.bilibili.im.type.Msg', '10': 'msg'},
{'1': 'cookie', '3': 2, '4': 1, '5': 9, '10': 'cookie'},
{'1': 'cookie2', '3': 3, '4': 1, '5': 9, '10': 'cookie2'},
{'1': 'error_code', '3': 4, '4': 1, '5': 5, '10': 'errorCode'},
{'1': 'dev_id', '3': 5, '4': 1, '5': 9, '10': 'devId'},
],
};
/// Descriptor for `ReqSendMsg`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqSendMsgDescriptor = $convert.base64Decode(
'CgpSZXFTZW5kTXNnEicKA21zZxgBIAEoCzIVLmJpbGliaWxpLmltLnR5cGUuTXNnUgNtc2cSFg'
'oGY29va2llGAIgASgJUgZjb29raWUSGAoHY29va2llMhgDIAEoCVIHY29va2llMhIdCgplcnJv'
'cl9jb2RlGAQgASgFUgllcnJvckNvZGUSFQoGZGV2X2lkGAUgASgJUgVkZXZJZA==');
@$core.Deprecated('Use reqSessionDetailDescriptor instead')
const ReqSessionDetail$json = {
'1': 'ReqSessionDetail',
'2': [
{'1': 'talker_id', '3': 1, '4': 1, '5': 4, '10': 'talkerId'},
{'1': 'session_type', '3': 2, '4': 1, '5': 13, '10': 'sessionType'},
{'1': 'uid', '3': 3, '4': 1, '5': 4, '10': 'uid'},
],
};
/// Descriptor for `ReqSessionDetail`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqSessionDetailDescriptor = $convert.base64Decode(
'ChBSZXFTZXNzaW9uRGV0YWlsEhsKCXRhbGtlcl9pZBgBIAEoBFIIdGFsa2VySWQSIQoMc2Vzc2'
'lvbl90eXBlGAIgASgNUgtzZXNzaW9uVHlwZRIQCgN1aWQYAyABKARSA3VpZA==');
@$core.Deprecated('Use reqSessionDetailsDescriptor instead')
const ReqSessionDetails$json = {
'1': 'ReqSessionDetails',
'2': [
{'1': 'sess_ids', '3': 1, '4': 3, '5': 11, '6': '.bilibili.im.interface.v1.ReqSessionDetail', '10': 'sessIds'},
],
};
/// Descriptor for `ReqSessionDetails`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqSessionDetailsDescriptor = $convert.base64Decode(
'ChFSZXFTZXNzaW9uRGV0YWlscxJFCghzZXNzX2lkcxgBIAMoCzIqLmJpbGliaWxpLmltLmludG'
'VyZmFjZS52MS5SZXFTZXNzaW9uRGV0YWlsUgdzZXNzSWRz');
@$core.Deprecated('Use reqSessionMsgDescriptor instead')
const ReqSessionMsg$json = {
'1': 'ReqSessionMsg',
'2': [
{'1': 'talker_id', '3': 1, '4': 1, '5': 4, '10': 'talkerId'},
{'1': 'session_type', '3': 2, '4': 1, '5': 5, '10': 'sessionType'},
{'1': 'end_seqno', '3': 3, '4': 1, '5': 4, '10': 'endSeqno'},
{'1': 'begin_seqno', '3': 4, '4': 1, '5': 4, '10': 'beginSeqno'},
{'1': 'size', '3': 5, '4': 1, '5': 5, '10': 'size'},
{'1': 'order', '3': 6, '4': 1, '5': 5, '10': 'order'},
{'1': 'dev_id', '3': 7, '4': 1, '5': 9, '10': 'devId'},
],
};
/// Descriptor for `ReqSessionMsg`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqSessionMsgDescriptor = $convert.base64Decode(
'Cg1SZXFTZXNzaW9uTXNnEhsKCXRhbGtlcl9pZBgBIAEoBFIIdGFsa2VySWQSIQoMc2Vzc2lvbl'
'90eXBlGAIgASgFUgtzZXNzaW9uVHlwZRIbCgllbmRfc2Vxbm8YAyABKARSCGVuZFNlcW5vEh8K'
'C2JlZ2luX3NlcW5vGAQgASgEUgpiZWdpblNlcW5vEhIKBHNpemUYBSABKAVSBHNpemUSFAoFb3'
'JkZXIYBiABKAVSBW9yZGVyEhUKBmRldl9pZBgHIAEoCVIFZGV2SWQ=');
@$core.Deprecated('Use reqSetTopDescriptor instead')
const ReqSetTop$json = {
'1': 'ReqSetTop',
'2': [
{'1': 'talker_id', '3': 1, '4': 1, '5': 4, '10': 'talkerId'},
{'1': 'session_type', '3': 2, '4': 1, '5': 13, '10': 'sessionType'},
{'1': 'op_type', '3': 3, '4': 1, '5': 13, '10': 'opType'},
],
};
/// Descriptor for `ReqSetTop`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqSetTopDescriptor = $convert.base64Decode(
'CglSZXFTZXRUb3ASGwoJdGFsa2VyX2lkGAEgASgEUgh0YWxrZXJJZBIhCgxzZXNzaW9uX3R5cG'
'UYAiABKA1SC3Nlc3Npb25UeXBlEhcKB29wX3R5cGUYAyABKA1SBm9wVHlwZQ==');
@$core.Deprecated('Use reqShareListDescriptor instead')
const ReqShareList$json = {
'1': 'ReqShareList',
'2': [
{'1': 'size', '3': 1, '4': 1, '5': 5, '10': 'size'},
],
};
/// Descriptor for `ReqShareList`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqShareListDescriptor = $convert.base64Decode(
'CgxSZXFTaGFyZUxpc3QSEgoEc2l6ZRgBIAEoBVIEc2l6ZQ==');
@$core.Deprecated('Use reqShowClearUnreadUIDescriptor instead')
const ReqShowClearUnreadUI$json = {
'1': 'ReqShowClearUnreadUI',
'2': [
{'1': 'unread_type', '3': 1, '4': 1, '5': 5, '10': 'unreadType'},
{'1': 'show_unfollow_list', '3': 2, '4': 1, '5': 5, '10': 'showUnfollowList'},
{'1': 'show_dustbin', '3': 4, '4': 1, '5': 5, '10': 'showDustbin'},
],
};
/// Descriptor for `ReqShowClearUnreadUI`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqShowClearUnreadUIDescriptor = $convert.base64Decode(
'ChRSZXFTaG93Q2xlYXJVbnJlYWRVSRIfCgt1bnJlYWRfdHlwZRgBIAEoBVIKdW5yZWFkVHlwZR'
'IsChJzaG93X3VuZm9sbG93X2xpc3QYAiABKAVSEHNob3dVbmZvbGxvd0xpc3QSIQoMc2hvd19k'
'dXN0YmluGAQgASgFUgtzaG93RHVzdGJpbg==');
@$core.Deprecated('Use reqSingleUnreadDescriptor instead')
const ReqSingleUnread$json = {
'1': 'ReqSingleUnread',
'2': [
{'1': 'unread_type', '3': 1, '4': 1, '5': 5, '10': 'unreadType'},
{'1': 'show_unfollow_list', '3': 2, '4': 1, '5': 5, '10': 'showUnfollowList'},
{'1': 'uid', '3': 3, '4': 1, '5': 3, '10': 'uid'},
{'1': 'show_dustbin', '3': 4, '4': 1, '5': 5, '10': 'showDustbin'},
],
};
/// Descriptor for `ReqSingleUnread`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqSingleUnreadDescriptor = $convert.base64Decode(
'Cg9SZXFTaW5nbGVVbnJlYWQSHwoLdW5yZWFkX3R5cGUYASABKAVSCnVucmVhZFR5cGUSLAoSc2'
'hvd191bmZvbGxvd19saXN0GAIgASgFUhBzaG93VW5mb2xsb3dMaXN0EhAKA3VpZBgDIAEoA1ID'
'dWlkEiEKDHNob3dfZHVzdGJpbhgEIAEoBVILc2hvd0R1c3RiaW4=');
@$core.Deprecated('Use reqSpecificSingleUnreadDescriptor instead')
const ReqSpecificSingleUnread$json = {
'1': 'ReqSpecificSingleUnread',
'2': [
{'1': 'talker_sessions', '3': 1, '4': 3, '5': 11, '6': '.bilibili.im.interface.v1.SimpleSession', '10': 'talkerSessions'},
],
};
/// Descriptor for `ReqSpecificSingleUnread`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqSpecificSingleUnreadDescriptor = $convert.base64Decode(
'ChdSZXFTcGVjaWZpY1NpbmdsZVVucmVhZBJQCg90YWxrZXJfc2Vzc2lvbnMYASADKAsyJy5iaW'
'xpYmlsaS5pbS5pbnRlcmZhY2UudjEuU2ltcGxlU2Vzc2lvblIOdGFsa2VyU2Vzc2lvbnM=');
@$core.Deprecated('Use reqSyncAckDescriptor instead')
const ReqSyncAck$json = {
'1': 'ReqSyncAck',
'2': [
{'1': 'client_seqno', '3': 1, '4': 1, '5': 4, '10': 'clientSeqno'},
],
};
/// Descriptor for `ReqSyncAck`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqSyncAckDescriptor = $convert.base64Decode(
'CgpSZXFTeW5jQWNrEiEKDGNsaWVudF9zZXFubxgBIAEoBFILY2xpZW50U2Vxbm8=');
@$core.Deprecated('Use reqTotalUnreadDescriptor instead')
const ReqTotalUnread$json = {
'1': 'ReqTotalUnread',
'2': [
{'1': 'unread_type', '3': 1, '4': 1, '5': 5, '10': 'unreadType'},
{'1': 'show_unfollow_list', '3': 2, '4': 1, '5': 5, '10': 'showUnfollowList'},
{'1': 'uid', '3': 3, '4': 1, '5': 3, '10': 'uid'},
{'1': 'show_dustbin', '3': 4, '4': 1, '5': 5, '10': 'showDustbin'},
{'1': 'singleunread_on', '3': 5, '4': 1, '5': 5, '10': 'singleunreadOn'},
{'1': 'msgfeed_on', '3': 6, '4': 1, '5': 5, '10': 'msgfeedOn'},
{'1': 'sysup_on', '3': 7, '4': 1, '5': 5, '10': 'sysupOn'},
],
};
/// Descriptor for `ReqTotalUnread`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqTotalUnreadDescriptor = $convert.base64Decode(
'Cg5SZXFUb3RhbFVucmVhZBIfCgt1bnJlYWRfdHlwZRgBIAEoBVIKdW5yZWFkVHlwZRIsChJzaG'
'93X3VuZm9sbG93X2xpc3QYAiABKAVSEHNob3dVbmZvbGxvd0xpc3QSEAoDdWlkGAMgASgDUgN1'
'aWQSIQoMc2hvd19kdXN0YmluGAQgASgFUgtzaG93RHVzdGJpbhInCg9zaW5nbGV1bnJlYWRfb2'
'4YBSABKAVSDnNpbmdsZXVucmVhZE9uEh0KCm1zZ2ZlZWRfb24YBiABKAVSCW1zZ2ZlZWRPbhIZ'
'CghzeXN1cF9vbhgHIAEoBVIHc3lzdXBPbg==');
@$core.Deprecated('Use reqUpdateAckDescriptor instead')
const ReqUpdateAck$json = {
'1': 'ReqUpdateAck',
'2': [
{'1': 'talker_id', '3': 1, '4': 1, '5': 4, '10': 'talkerId'},
{'1': 'session_type', '3': 2, '4': 1, '5': 13, '10': 'sessionType'},
{'1': 'ack_seqno', '3': 3, '4': 1, '5': 4, '10': 'ackSeqno'},
],
};
/// Descriptor for `ReqUpdateAck`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqUpdateAckDescriptor = $convert.base64Decode(
'CgxSZXFVcGRhdGVBY2sSGwoJdGFsa2VyX2lkGAEgASgEUgh0YWxrZXJJZBIhCgxzZXNzaW9uX3'
'R5cGUYAiABKA1SC3Nlc3Npb25UeXBlEhsKCWFja19zZXFubxgDIAEoBFIIYWNrU2Vxbm8=');
@$core.Deprecated('Use reqUpdateInterceptDescriptor instead')
const ReqUpdateIntercept$json = {
'1': 'ReqUpdateIntercept',
'2': [
{'1': 'uid', '3': 1, '4': 1, '5': 3, '10': 'uid'},
{'1': 'talker_id', '3': 2, '4': 1, '5': 3, '10': 'talkerId'},
{'1': 'status', '3': 3, '4': 1, '5': 5, '10': 'status'},
],
};
/// Descriptor for `ReqUpdateIntercept`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqUpdateInterceptDescriptor = $convert.base64Decode(
'ChJSZXFVcGRhdGVJbnRlcmNlcHQSEAoDdWlkGAEgASgDUgN1aWQSGwoJdGFsa2VyX2lkGAIgAS'
'gDUgh0YWxrZXJJZBIWCgZzdGF0dXMYAyABKAVSBnN0YXR1cw==');
@$core.Deprecated('Use reqUpdateTotalUnreadDescriptor instead')
const ReqUpdateTotalUnread$json = {
'1': 'ReqUpdateTotalUnread',
};
/// Descriptor for `ReqUpdateTotalUnread`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List reqUpdateTotalUnreadDescriptor = $convert.base64Decode(
'ChRSZXFVcGRhdGVUb3RhbFVucmVhZA==');
@$core.Deprecated('Use rspCloseClearUnreadUIDescriptor instead')
const RspCloseClearUnreadUI$json = {
'1': 'RspCloseClearUnreadUI',
};
/// Descriptor for `RspCloseClearUnreadUI`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspCloseClearUnreadUIDescriptor = $convert.base64Decode(
'ChVSc3BDbG9zZUNsZWFyVW5yZWFkVUk=');
@$core.Deprecated('Use rspGetMsgDescriptor instead')
const RspGetMsg$json = {
'1': 'RspGetMsg',
'2': [
{'1': 'msg', '3': 1, '4': 3, '5': 11, '6': '.bilibili.im.type.Msg', '10': 'msg'},
],
};
/// Descriptor for `RspGetMsg`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspGetMsgDescriptor = $convert.base64Decode(
'CglSc3BHZXRNc2cSJwoDbXNnGAEgAygLMhUuYmlsaWJpbGkuaW0udHlwZS5Nc2dSA21zZw==');
@$core.Deprecated('Use rspLiveInfoDescriptor instead')
const RspLiveInfo$json = {
'1': 'RspLiveInfo',
'2': [
{'1': 'live_status', '3': 1, '4': 1, '5': 3, '10': 'liveStatus'},
{'1': 'jump_url', '3': 2, '4': 1, '5': 9, '10': 'jumpUrl'},
],
};
/// Descriptor for `RspLiveInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspLiveInfoDescriptor = $convert.base64Decode(
'CgtSc3BMaXZlSW5mbxIfCgtsaXZlX3N0YXR1cxgBIAEoA1IKbGl2ZVN0YXR1cxIZCghqdW1wX3'
'VybBgCIAEoCVIHanVtcFVybA==');
@$core.Deprecated('Use rspMyGroupUnreadDescriptor instead')
const RspMyGroupUnread$json = {
'1': 'RspMyGroupUnread',
'2': [
{'1': 'unread_count', '3': 1, '4': 1, '5': 13, '10': 'unreadCount'},
],
};
/// Descriptor for `RspMyGroupUnread`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspMyGroupUnreadDescriptor = $convert.base64Decode(
'ChBSc3BNeUdyb3VwVW5yZWFkEiEKDHVucmVhZF9jb3VudBgBIAEoDVILdW5yZWFkQ291bnQ=');
@$core.Deprecated('Use rspRelationSyncDescriptor instead')
const RspRelationSync$json = {
'1': 'RspRelationSync',
'2': [
{'1': 'full', '3': 1, '4': 1, '5': 5, '10': 'full'},
{'1': 'relation_logs', '3': 2, '4': 3, '5': 11, '6': '.bilibili.im.type.RelationLog', '10': 'relationLogs'},
{'1': 'friend_list', '3': 3, '4': 3, '5': 11, '6': '.bilibili.im.type.FriendRelation', '10': 'friendList'},
{'1': 'server_relation_oplog_seqno', '3': 4, '4': 1, '5': 4, '10': 'serverRelationOplogSeqno'},
{'1': 'group_list', '3': 5, '4': 3, '5': 11, '6': '.bilibili.im.type.GroupRelation', '10': 'groupList'},
],
};
/// Descriptor for `RspRelationSync`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspRelationSyncDescriptor = $convert.base64Decode(
'Cg9Sc3BSZWxhdGlvblN5bmMSEgoEZnVsbBgBIAEoBVIEZnVsbBJCCg1yZWxhdGlvbl9sb2dzGA'
'IgAygLMh0uYmlsaWJpbGkuaW0udHlwZS5SZWxhdGlvbkxvZ1IMcmVsYXRpb25Mb2dzEkEKC2Zy'
'aWVuZF9saXN0GAMgAygLMiAuYmlsaWJpbGkuaW0udHlwZS5GcmllbmRSZWxhdGlvblIKZnJpZW'
'5kTGlzdBI9ChtzZXJ2ZXJfcmVsYXRpb25fb3Bsb2dfc2Vxbm8YBCABKARSGHNlcnZlclJlbGF0'
'aW9uT3Bsb2dTZXFubxI+Cgpncm91cF9saXN0GAUgAygLMh8uYmlsaWJpbGkuaW0udHlwZS5Hcm'
'91cFJlbGF0aW9uUglncm91cExpc3Q=');
@$core.Deprecated('Use rspSendMsgDescriptor instead')
const RspSendMsg$json = {
'1': 'RspSendMsg',
'2': [
{'1': 'msg_key', '3': 1, '4': 1, '5': 4, '10': 'msgKey'},
{'1': 'e_infos', '3': 2, '4': 3, '5': 11, '6': '.bilibili.im.interface.v1.EmotionInfo', '10': 'eInfos'},
{'1': 'msg_content', '3': 3, '4': 1, '5': 9, '10': 'msgContent'},
{'1': 'key_hit_infos', '3': 4, '4': 1, '5': 11, '6': '.bilibili.im.type.KeyHitInfos', '10': 'keyHitInfos'},
],
};
/// Descriptor for `RspSendMsg`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspSendMsgDescriptor = $convert.base64Decode(
'CgpSc3BTZW5kTXNnEhcKB21zZ19rZXkYASABKARSBm1zZ0tleRI+CgdlX2luZm9zGAIgAygLMi'
'UuYmlsaWJpbGkuaW0uaW50ZXJmYWNlLnYxLkVtb3Rpb25JbmZvUgZlSW5mb3MSHwoLbXNnX2Nv'
'bnRlbnQYAyABKAlSCm1zZ0NvbnRlbnQSQQoNa2V5X2hpdF9pbmZvcxgEIAEoCzIdLmJpbGliaW'
'xpLmltLnR5cGUuS2V5SGl0SW5mb3NSC2tleUhpdEluZm9z');
@$core.Deprecated('Use rspSessionDetailsDescriptor instead')
const RspSessionDetails$json = {
'1': 'RspSessionDetails',
'2': [
{'1': 'sess_infos', '3': 1, '4': 3, '5': 11, '6': '.bilibili.im.type.SessionInfo', '10': 'sessInfos'},
],
};
/// Descriptor for `RspSessionDetails`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspSessionDetailsDescriptor = $convert.base64Decode(
'ChFSc3BTZXNzaW9uRGV0YWlscxI8CgpzZXNzX2luZm9zGAEgAygLMh0uYmlsaWJpbGkuaW0udH'
'lwZS5TZXNzaW9uSW5mb1IJc2Vzc0luZm9z');
@$core.Deprecated('Use rspSessionMsgDescriptor instead')
const RspSessionMsg$json = {
'1': 'RspSessionMsg',
'2': [
{'1': 'messages', '3': 1, '4': 3, '5': 11, '6': '.bilibili.im.type.Msg', '10': 'messages'},
{'1': 'has_more', '3': 2, '4': 1, '5': 5, '10': 'hasMore'},
{'1': 'min_seqno', '3': 3, '4': 1, '5': 4, '10': 'minSeqno'},
{'1': 'max_seqno', '3': 4, '4': 1, '5': 4, '10': 'maxSeqno'},
{'1': 'e_infos', '3': 5, '4': 3, '5': 11, '6': '.bilibili.im.interface.v1.EmotionInfo', '10': 'eInfos'},
],
};
/// Descriptor for `RspSessionMsg`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspSessionMsgDescriptor = $convert.base64Decode(
'Cg1Sc3BTZXNzaW9uTXNnEjEKCG1lc3NhZ2VzGAEgAygLMhUuYmlsaWJpbGkuaW0udHlwZS5Nc2'
'dSCG1lc3NhZ2VzEhkKCGhhc19tb3JlGAIgASgFUgdoYXNNb3JlEhsKCW1pbl9zZXFubxgDIAEo'
'BFIIbWluU2Vxbm8SGwoJbWF4X3NlcW5vGAQgASgEUghtYXhTZXFubxI+CgdlX2luZm9zGAUgAy'
'gLMiUuYmlsaWJpbGkuaW0uaW50ZXJmYWNlLnYxLkVtb3Rpb25JbmZvUgZlSW5mb3M=');
@$core.Deprecated('Use rspSessionsDescriptor instead')
const RspSessions$json = {
'1': 'RspSessions',
'2': [
{'1': 'session_list', '3': 1, '4': 3, '5': 11, '6': '.bilibili.im.type.SessionInfo', '10': 'sessionList'},
{'1': 'has_more', '3': 2, '4': 1, '5': 13, '10': 'hasMore'},
{'1': 'anti_disturb_cleaning', '3': 3, '4': 1, '5': 8, '10': 'antiDisturbCleaning'},
{'1': 'is_address_list_empty', '3': 4, '4': 1, '5': 5, '10': 'isAddressListEmpty'},
{'1': 'system_msg', '3': 5, '4': 3, '5': 11, '6': '.bilibili.im.interface.v1.RspSessions.SystemMsgEntry', '10': 'systemMsg'},
{'1': 'show_level', '3': 6, '4': 1, '5': 8, '10': 'showLevel'},
],
'3': [RspSessions_SystemMsgEntry$json],
};
@$core.Deprecated('Use rspSessionsDescriptor instead')
const RspSessions_SystemMsgEntry$json = {
'1': 'SystemMsgEntry',
'2': [
{'1': 'key', '3': 1, '4': 1, '5': 5, '10': 'key'},
{'1': 'value', '3': 2, '4': 1, '5': 3, '10': 'value'},
],
'7': {'7': true},
};
/// Descriptor for `RspSessions`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspSessionsDescriptor = $convert.base64Decode(
'CgtSc3BTZXNzaW9ucxJACgxzZXNzaW9uX2xpc3QYASADKAsyHS5iaWxpYmlsaS5pbS50eXBlLl'
'Nlc3Npb25JbmZvUgtzZXNzaW9uTGlzdBIZCghoYXNfbW9yZRgCIAEoDVIHaGFzTW9yZRIyChVh'
'bnRpX2Rpc3R1cmJfY2xlYW5pbmcYAyABKAhSE2FudGlEaXN0dXJiQ2xlYW5pbmcSMQoVaXNfYW'
'RkcmVzc19saXN0X2VtcHR5GAQgASgFUhJpc0FkZHJlc3NMaXN0RW1wdHkSUwoKc3lzdGVtX21z'
'ZxgFIAMoCzI0LmJpbGliaWxpLmltLmludGVyZmFjZS52MS5Sc3BTZXNzaW9ucy5TeXN0ZW1Nc2'
'dFbnRyeVIJc3lzdGVtTXNnEh0KCnNob3dfbGV2ZWwYBiABKAhSCXNob3dMZXZlbBo8Cg5TeXN0'
'ZW1Nc2dFbnRyeRIQCgNrZXkYASABKAVSA2tleRIUCgV2YWx1ZRgCIAEoA1IFdmFsdWU6AjgB');
@$core.Deprecated('Use rspShareListDescriptor instead')
const RspShareList$json = {
'1': 'RspShareList',
'2': [
{'1': 'session_list', '3': 1, '4': 3, '5': 11, '6': '.bilibili.im.interface.v1.ShareSessionInfo', '10': 'sessionList'},
{'1': 'IsAddressListEmpty', '3': 2, '4': 1, '5': 5, '10': 'IsAddressListEmpty'},
],
};
/// Descriptor for `RspShareList`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspShareListDescriptor = $convert.base64Decode(
'CgxSc3BTaGFyZUxpc3QSTQoMc2Vzc2lvbl9saXN0GAEgAygLMiouYmlsaWJpbGkuaW0uaW50ZX'
'JmYWNlLnYxLlNoYXJlU2Vzc2lvbkluZm9SC3Nlc3Npb25MaXN0Ei4KEklzQWRkcmVzc0xpc3RF'
'bXB0eRgCIAEoBVISSXNBZGRyZXNzTGlzdEVtcHR5');
@$core.Deprecated('Use rspShowClearUnreadUIDescriptor instead')
const RspShowClearUnreadUI$json = {
'1': 'RspShowClearUnreadUI',
'2': [
{'1': 'display', '3': 1, '4': 1, '5': 8, '10': 'display'},
{'1': 'text', '3': 2, '4': 1, '5': 9, '10': 'text'},
],
};
/// Descriptor for `RspShowClearUnreadUI`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspShowClearUnreadUIDescriptor = $convert.base64Decode(
'ChRSc3BTaG93Q2xlYXJVbnJlYWRVSRIYCgdkaXNwbGF5GAEgASgIUgdkaXNwbGF5EhIKBHRleH'
'QYAiABKAlSBHRleHQ=');
@$core.Deprecated('Use rspSingleUnreadDescriptor instead')
const RspSingleUnread$json = {
'1': 'RspSingleUnread',
'2': [
{'1': 'unfollow_unread', '3': 1, '4': 1, '5': 4, '10': 'unfollowUnread'},
{'1': 'follow_unread', '3': 2, '4': 1, '5': 4, '10': 'followUnread'},
{'1': 'unfollow_push_msg', '3': 3, '4': 1, '5': 13, '10': 'unfollowPushMsg'},
{'1': 'dustbin_push_msg', '3': 4, '4': 1, '5': 5, '10': 'dustbinPushMsg'},
{'1': 'dustbin_unread', '3': 5, '4': 1, '5': 3, '10': 'dustbinUnread'},
{'1': 'biz_msg_unfollow_unread', '3': 6, '4': 1, '5': 3, '10': 'bizMsgUnfollowUnread'},
{'1': 'biz_msg_follow_unread', '3': 7, '4': 1, '5': 3, '10': 'bizMsgFollowUnread'},
],
};
/// Descriptor for `RspSingleUnread`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspSingleUnreadDescriptor = $convert.base64Decode(
'Cg9Sc3BTaW5nbGVVbnJlYWQSJwoPdW5mb2xsb3dfdW5yZWFkGAEgASgEUg51bmZvbGxvd1Vucm'
'VhZBIjCg1mb2xsb3dfdW5yZWFkGAIgASgEUgxmb2xsb3dVbnJlYWQSKgoRdW5mb2xsb3dfcHVz'
'aF9tc2cYAyABKA1SD3VuZm9sbG93UHVzaE1zZxIoChBkdXN0YmluX3B1c2hfbXNnGAQgASgFUg'
'5kdXN0YmluUHVzaE1zZxIlCg5kdXN0YmluX3VucmVhZBgFIAEoA1INZHVzdGJpblVucmVhZBI1'
'ChdiaXpfbXNnX3VuZm9sbG93X3VucmVhZBgGIAEoA1IUYml6TXNnVW5mb2xsb3dVbnJlYWQSMQ'
'oVYml6X21zZ19mb2xsb3dfdW5yZWFkGAcgASgDUhJiaXpNc2dGb2xsb3dVbnJlYWQ=');
@$core.Deprecated('Use rspSpecificSingleUnreadDescriptor instead')
const RspSpecificSingleUnread$json = {
'1': 'RspSpecificSingleUnread',
'2': [
{'1': 'talkerUnreadCnt', '3': 1, '4': 3, '5': 11, '6': '.bilibili.im.interface.v1.RspSpecificSingleUnread.TalkerUnreadCntEntry', '10': 'talkerUnreadCnt'},
{'1': 'allUnreadCnt', '3': 2, '4': 1, '5': 4, '10': 'allUnreadCnt'},
],
'3': [RspSpecificSingleUnread_TalkerUnreadCntEntry$json],
};
@$core.Deprecated('Use rspSpecificSingleUnreadDescriptor instead')
const RspSpecificSingleUnread_TalkerUnreadCntEntry$json = {
'1': 'TalkerUnreadCntEntry',
'2': [
{'1': 'key', '3': 1, '4': 1, '5': 4, '10': 'key'},
{'1': 'value', '3': 2, '4': 1, '5': 4, '10': 'value'},
],
'7': {'7': true},
};
/// Descriptor for `RspSpecificSingleUnread`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspSpecificSingleUnreadDescriptor = $convert.base64Decode(
'ChdSc3BTcGVjaWZpY1NpbmdsZVVucmVhZBJwCg90YWxrZXJVbnJlYWRDbnQYASADKAsyRi5iaW'
'xpYmlsaS5pbS5pbnRlcmZhY2UudjEuUnNwU3BlY2lmaWNTaW5nbGVVbnJlYWQuVGFsa2VyVW5y'
'ZWFkQ250RW50cnlSD3RhbGtlclVucmVhZENudBIiCgxhbGxVbnJlYWRDbnQYAiABKARSDGFsbF'
'VucmVhZENudBpCChRUYWxrZXJVbnJlYWRDbnRFbnRyeRIQCgNrZXkYASABKARSA2tleRIUCgV2'
'YWx1ZRgCIAEoBFIFdmFsdWU6AjgB');
@$core.Deprecated('Use rspSyncAckDescriptor instead')
const RspSyncAck$json = {
'1': 'RspSyncAck',
};
/// Descriptor for `RspSyncAck`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspSyncAckDescriptor = $convert.base64Decode(
'CgpSc3BTeW5jQWNr');
@$core.Deprecated('Use rspTotalUnreadDescriptor instead')
const RspTotalUnread$json = {
'1': 'RspTotalUnread',
'2': [
{'1': 'session_single_unread', '3': 1, '4': 1, '5': 11, '6': '.bilibili.im.interface.v1.SessionSingleUnreadRsp', '10': 'sessionSingleUnread'},
{'1': 'msg_feed_unread', '3': 2, '4': 1, '5': 11, '6': '.bilibili.im.interface.v1.MsgFeedUnreadRsp', '10': 'msgFeedUnread'},
{'1': 'sys_msg_interface_last_msg', '3': 3, '4': 1, '5': 11, '6': '.bilibili.im.interface.v1.SysMsgInterfaceLastMsgRsp', '10': 'sysMsgInterfaceLastMsg'},
{'1': 'total_unread', '3': 4, '4': 1, '5': 5, '10': 'totalUnread'},
],
};
/// Descriptor for `RspTotalUnread`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspTotalUnreadDescriptor = $convert.base64Decode(
'Cg5Sc3BUb3RhbFVucmVhZBJkChVzZXNzaW9uX3NpbmdsZV91bnJlYWQYASABKAsyMC5iaWxpYm'
'lsaS5pbS5pbnRlcmZhY2UudjEuU2Vzc2lvblNpbmdsZVVucmVhZFJzcFITc2Vzc2lvblNpbmds'
'ZVVucmVhZBJSCg9tc2dfZmVlZF91bnJlYWQYAiABKAsyKi5iaWxpYmlsaS5pbS5pbnRlcmZhY2'
'UudjEuTXNnRmVlZFVucmVhZFJzcFINbXNnRmVlZFVucmVhZBJvChpzeXNfbXNnX2ludGVyZmFj'
'ZV9sYXN0X21zZxgDIAEoCzIzLmJpbGliaWxpLmltLmludGVyZmFjZS52MS5TeXNNc2dJbnRlcm'
'ZhY2VMYXN0TXNnUnNwUhZzeXNNc2dJbnRlcmZhY2VMYXN0TXNnEiEKDHRvdGFsX3VucmVhZBgE'
'IAEoBVILdG90YWxVbnJlYWQ=');
@$core.Deprecated('Use rspUpdateTotalUnreadDescriptor instead')
const RspUpdateTotalUnread$json = {
'1': 'RspUpdateTotalUnread',
};
/// Descriptor for `RspUpdateTotalUnread`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List rspUpdateTotalUnreadDescriptor = $convert.base64Decode(
'ChRSc3BVcGRhdGVUb3RhbFVucmVhZA==');
@$core.Deprecated('Use sessionSingleUnreadRspDescriptor instead')
const SessionSingleUnreadRsp$json = {
'1': 'SessionSingleUnreadRsp',
'2': [
{'1': 'unfollow_unread', '3': 1, '4': 1, '5': 3, '10': 'unfollowUnread'},
{'1': 'follow_unread', '3': 2, '4': 1, '5': 3, '10': 'followUnread'},
{'1': 'unfollow_push_msg', '3': 3, '4': 1, '5': 5, '10': 'unfollowPushMsg'},
{'1': 'dustbin_push_msg', '3': 4, '4': 1, '5': 5, '10': 'dustbinPushMsg'},
{'1': 'dustbin_unread', '3': 5, '4': 1, '5': 3, '10': 'dustbinUnread'},
],
};
/// Descriptor for `SessionSingleUnreadRsp`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List sessionSingleUnreadRspDescriptor = $convert.base64Decode(
'ChZTZXNzaW9uU2luZ2xlVW5yZWFkUnNwEicKD3VuZm9sbG93X3VucmVhZBgBIAEoA1IOdW5mb2'
'xsb3dVbnJlYWQSIwoNZm9sbG93X3VucmVhZBgCIAEoA1IMZm9sbG93VW5yZWFkEioKEXVuZm9s'
'bG93X3B1c2hfbXNnGAMgASgFUg91bmZvbGxvd1B1c2hNc2cSKAoQZHVzdGJpbl9wdXNoX21zZx'
'gEIAEoBVIOZHVzdGJpblB1c2hNc2cSJQoOZHVzdGJpbl91bnJlYWQYBSABKANSDWR1c3RiaW5V'
'bnJlYWQ=');
@$core.Deprecated('Use shareSessionInfoDescriptor instead')
const ShareSessionInfo$json = {
'1': 'ShareSessionInfo',
'2': [
{'1': 'talker_id', '3': 1, '4': 1, '5': 4, '10': 'talkerId'},
{'1': 'talker_uname', '3': 2, '4': 1, '5': 9, '10': 'talkerUname'},
{'1': 'talker_icon', '3': 3, '4': 1, '5': 9, '10': 'talkerIcon'},
{'1': 'official_type', '3': 4, '4': 1, '5': 5, '10': 'officialType'},
],
};
/// Descriptor for `ShareSessionInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List shareSessionInfoDescriptor = $convert.base64Decode(
'ChBTaGFyZVNlc3Npb25JbmZvEhsKCXRhbGtlcl9pZBgBIAEoBFIIdGFsa2VySWQSIQoMdGFsa2'
'VyX3VuYW1lGAIgASgJUgt0YWxrZXJVbmFtZRIfCgt0YWxrZXJfaWNvbhgDIAEoCVIKdGFsa2Vy'
'SWNvbhIjCg1vZmZpY2lhbF90eXBlGAQgASgFUgxvZmZpY2lhbFR5cGU=');
@$core.Deprecated('Use simpleSessionDescriptor instead')
const SimpleSession$json = {
'1': 'SimpleSession',
'2': [
{'1': 'talker_id', '3': 1, '4': 1, '5': 4, '10': 'talkerId'},
{'1': 'session_type', '3': 2, '4': 1, '5': 13, '10': 'sessionType'},
],
};
/// Descriptor for `SimpleSession`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List simpleSessionDescriptor = $convert.base64Decode(
'Cg1TaW1wbGVTZXNzaW9uEhsKCXRhbGtlcl9pZBgBIAEoBFIIdGFsa2VySWQSIQoMc2Vzc2lvbl'
'90eXBlGAIgASgNUgtzZXNzaW9uVHlwZQ==');
@$core.Deprecated('Use sysMsgInterfaceLastMsgRspDescriptor instead')
const SysMsgInterfaceLastMsgRsp$json = {
'1': 'SysMsgInterfaceLastMsgRsp',
'2': [
{'1': 'unread', '3': 1, '4': 1, '5': 5, '10': 'unread'},
{'1': 'title', '3': 2, '4': 1, '5': 9, '10': 'title'},
{'1': 'time', '3': 3, '4': 1, '5': 9, '10': 'time'},
{'1': 'id', '3': 4, '4': 1, '5': 3, '10': 'id'},
],
};
/// Descriptor for `SysMsgInterfaceLastMsgRsp`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List sysMsgInterfaceLastMsgRspDescriptor = $convert.base64Decode(
'ChlTeXNNc2dJbnRlcmZhY2VMYXN0TXNnUnNwEhYKBnVucmVhZBgBIAEoBVIGdW5yZWFkEhQKBX'
'RpdGxlGAIgASgJUgV0aXRsZRISCgR0aW1lGAMgASgJUgR0aW1lEg4KAmlkGAQgASgDUgJpZA==');

1737
lib/grpc/im/type/im.pb.dart Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,309 @@
//
// Generated code. Do not modify.
// source: bilibili/im/type/im.proto
//
// @dart = 3.3
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
// ignore_for_file: constant_identifier_names, library_prefixes
// ignore_for_file: non_constant_identifier_names, prefer_final_fields
// ignore_for_file: unnecessary_import, unnecessary_this, unused_import
import 'dart:core' as $core;
import 'package:protobuf/protobuf.dart' as $pb;
class CmdId extends $pb.ProtobufEnum {
static const CmdId EN_CMD_ID_INVALID = CmdId._(0, _omitEnumNames ? '' : 'EN_CMD_ID_INVALID');
/// msg_svr
static const CmdId EN_CMD_ID_SEND_MSG = CmdId._(200001, _omitEnumNames ? '' : 'EN_CMD_ID_SEND_MSG');
/// sync_msg_svr
static const CmdId EN_CMD_ID_SYNC_MSG = CmdId._(500001, _omitEnumNames ? '' : 'EN_CMD_ID_SYNC_MSG');
static const CmdId EN_CMD_ID_SYNC_RELATION = CmdId._(500002, _omitEnumNames ? '' : 'EN_CMD_ID_SYNC_RELATION');
static const CmdId EN_CMD_ID_SYNC_ACK = CmdId._(500003, _omitEnumNames ? '' : 'EN_CMD_ID_SYNC_ACK');
static const CmdId EN_CMD_ID_SYNC_FETCH_SESSION_MSGS = CmdId._(500006, _omitEnumNames ? '' : 'EN_CMD_ID_SYNC_FETCH_SESSION_MSGS');
/// session_svr
static const CmdId EN_CMD_ID_SESSION_SVR_GET_SESSIONS = CmdId._(1000001, _omitEnumNames ? '' : 'EN_CMD_ID_SESSION_SVR_GET_SESSIONS');
static const CmdId EN_CMD_ID_SESSION_SVR_NEW_SESSIONS = CmdId._(1000002, _omitEnumNames ? '' : 'EN_CMD_ID_SESSION_SVR_NEW_SESSIONS');
static const CmdId EN_CMD_ID_SESSION_SVR_ACK_SESSIONS = CmdId._(1000003, _omitEnumNames ? '' : 'EN_CMD_ID_SESSION_SVR_ACK_SESSIONS');
static const CmdId EN_CMD_ID_SESSION_SVR_UPDATE_ACK = CmdId._(1000004, _omitEnumNames ? '' : 'EN_CMD_ID_SESSION_SVR_UPDATE_ACK');
static const CmdId EN_CMD_ID_SESSION_SVR_SET_TOP = CmdId._(1000005, _omitEnumNames ? '' : 'EN_CMD_ID_SESSION_SVR_SET_TOP');
static const CmdId EN_CMD_ID_SESSION_SVR_REMOVE_SESSION = CmdId._(1000007, _omitEnumNames ? '' : 'EN_CMD_ID_SESSION_SVR_REMOVE_SESSION');
static const CmdId EN_CMD_ID_SESSION_SVR_SINGLE_UNREAD = CmdId._(1000008, _omitEnumNames ? '' : 'EN_CMD_ID_SESSION_SVR_SINGLE_UNREAD');
static const CmdId EN_CMD_ID_SESSION_SVR_MY_GROUP_UNREAD = CmdId._(1000009, _omitEnumNames ? '' : 'EN_CMD_ID_SESSION_SVR_MY_GROUP_UNREAD');
static const CmdId EN_CMD_ID_SESSION_SVR_UPDATE_UNFLW_READ = CmdId._(1000010, _omitEnumNames ? '' : 'EN_CMD_ID_SESSION_SVR_UPDATE_UNFLW_READ');
static const CmdId EN_CMD_ID_SESSION_SVR_GROUP_ASSIS_MSG = CmdId._(1000011, _omitEnumNames ? '' : 'EN_CMD_ID_SESSION_SVR_GROUP_ASSIS_MSG');
static const CmdId EN_CMD_ID_SESSION_SVR_ACK_ASSIS_MSG = CmdId._(1000012, _omitEnumNames ? '' : 'EN_CMD_ID_SESSION_SVR_ACK_ASSIS_MSG');
static const CmdId EN_CMD_ID_SESSION_SVR_SESSION_DETAIL = CmdId._(1000015, _omitEnumNames ? '' : 'EN_CMD_ID_SESSION_SVR_SESSION_DETAIL');
static const CmdId EN_CMD_ID_SESSION_SVR_BATCH_SESS_DETAIL = CmdId._(1000016, _omitEnumNames ? '' : 'EN_CMD_ID_SESSION_SVR_BATCH_SESS_DETAIL');
static const CmdId EN_CMD_ID_SESSION_SVR_BATCH_RM_SESSIONS = CmdId._(1000017, _omitEnumNames ? '' : 'EN_CMD_ID_SESSION_SVR_BATCH_RM_SESSIONS');
static const $core.List<CmdId> values = <CmdId> [
EN_CMD_ID_INVALID,
EN_CMD_ID_SEND_MSG,
EN_CMD_ID_SYNC_MSG,
EN_CMD_ID_SYNC_RELATION,
EN_CMD_ID_SYNC_ACK,
EN_CMD_ID_SYNC_FETCH_SESSION_MSGS,
EN_CMD_ID_SESSION_SVR_GET_SESSIONS,
EN_CMD_ID_SESSION_SVR_NEW_SESSIONS,
EN_CMD_ID_SESSION_SVR_ACK_SESSIONS,
EN_CMD_ID_SESSION_SVR_UPDATE_ACK,
EN_CMD_ID_SESSION_SVR_SET_TOP,
EN_CMD_ID_SESSION_SVR_REMOVE_SESSION,
EN_CMD_ID_SESSION_SVR_SINGLE_UNREAD,
EN_CMD_ID_SESSION_SVR_MY_GROUP_UNREAD,
EN_CMD_ID_SESSION_SVR_UPDATE_UNFLW_READ,
EN_CMD_ID_SESSION_SVR_GROUP_ASSIS_MSG,
EN_CMD_ID_SESSION_SVR_ACK_ASSIS_MSG,
EN_CMD_ID_SESSION_SVR_SESSION_DETAIL,
EN_CMD_ID_SESSION_SVR_BATCH_SESS_DETAIL,
EN_CMD_ID_SESSION_SVR_BATCH_RM_SESSIONS,
];
static final $core.Map<$core.int, CmdId> _byValue = $pb.ProtobufEnum.initByValue(values);
static CmdId? valueOf($core.int value) => _byValue[value];
const CmdId._(super.v, super.n);
}
class ENUM_BIZ_MSG_TYPE extends $pb.ProtobufEnum {
static const ENUM_BIZ_MSG_TYPE BIZ_MSG_TYPE_NORMAL = ENUM_BIZ_MSG_TYPE._(0, _omitEnumNames ? '' : 'BIZ_MSG_TYPE_NORMAL');
static const ENUM_BIZ_MSG_TYPE BIZ_MSG_TYPE_CARD_VIDEO = ENUM_BIZ_MSG_TYPE._(1, _omitEnumNames ? '' : 'BIZ_MSG_TYPE_CARD_VIDEO');
static const $core.List<ENUM_BIZ_MSG_TYPE> values = <ENUM_BIZ_MSG_TYPE> [
BIZ_MSG_TYPE_NORMAL,
BIZ_MSG_TYPE_CARD_VIDEO,
];
static final $core.Map<$core.int, ENUM_BIZ_MSG_TYPE> _byValue = $pb.ProtobufEnum.initByValue(values);
static ENUM_BIZ_MSG_TYPE? valueOf($core.int value) => _byValue[value];
const ENUM_BIZ_MSG_TYPE._(super.v, super.n);
}
/// 消息来源
class MsgSource extends $pb.ProtobufEnum {
static const MsgSource EN_MSG_SOURCE_UNKONW = MsgSource._(0, _omitEnumNames ? '' : 'EN_MSG_SOURCE_UNKONW');
static const MsgSource EN_MSG_SOURCE_IOS = MsgSource._(1, _omitEnumNames ? '' : 'EN_MSG_SOURCE_IOS');
static const MsgSource EN_MSG_SOURCE_ANDRIOD = MsgSource._(2, _omitEnumNames ? '' : 'EN_MSG_SOURCE_ANDRIOD');
static const MsgSource EN_MSG_SOURCE_H5 = MsgSource._(3, _omitEnumNames ? '' : 'EN_MSG_SOURCE_H5');
static const MsgSource EN_MSG_SOURCE_PC = MsgSource._(4, _omitEnumNames ? '' : 'EN_MSG_SOURCE_PC');
static const MsgSource EN_MSG_SOURCE_BACKSTAGE = MsgSource._(5, _omitEnumNames ? '' : 'EN_MSG_SOURCE_BACKSTAGE');
static const MsgSource EN_MSG_SOURCE_BIZ = MsgSource._(6, _omitEnumNames ? '' : 'EN_MSG_SOURCE_BIZ');
static const MsgSource EN_MSG_SOURCE_WEB = MsgSource._(7, _omitEnumNames ? '' : 'EN_MSG_SOURCE_WEB');
static const MsgSource EN_MSG_SOURCE_AUTOREPLY_BY_FOLLOWED = MsgSource._(8, _omitEnumNames ? '' : 'EN_MSG_SOURCE_AUTOREPLY_BY_FOLLOWED');
static const MsgSource EN_MSG_SOURCE_AUTOREPLY_BY_RECEIVE_MSG = MsgSource._(9, _omitEnumNames ? '' : 'EN_MSG_SOURCE_AUTOREPLY_BY_RECEIVE_MSG');
static const MsgSource EN_MSG_SOURCE_AUTOREPLY_BY_KEYWORDS = MsgSource._(10, _omitEnumNames ? '' : 'EN_MSG_SOURCE_AUTOREPLY_BY_KEYWORDS');
static const MsgSource EN_MSG_SOURCE_AUTOREPLY_BY_VOYAGE = MsgSource._(11, _omitEnumNames ? '' : 'EN_MSG_SOURCE_AUTOREPLY_BY_VOYAGE');
static const MsgSource EN_MSG_SOURCE_VC_ATTACH_MSG = MsgSource._(12, _omitEnumNames ? '' : 'EN_MSG_SOURCE_VC_ATTACH_MSG');
static const $core.List<MsgSource> values = <MsgSource> [
EN_MSG_SOURCE_UNKONW,
EN_MSG_SOURCE_IOS,
EN_MSG_SOURCE_ANDRIOD,
EN_MSG_SOURCE_H5,
EN_MSG_SOURCE_PC,
EN_MSG_SOURCE_BACKSTAGE,
EN_MSG_SOURCE_BIZ,
EN_MSG_SOURCE_WEB,
EN_MSG_SOURCE_AUTOREPLY_BY_FOLLOWED,
EN_MSG_SOURCE_AUTOREPLY_BY_RECEIVE_MSG,
EN_MSG_SOURCE_AUTOREPLY_BY_KEYWORDS,
EN_MSG_SOURCE_AUTOREPLY_BY_VOYAGE,
EN_MSG_SOURCE_VC_ATTACH_MSG,
];
static final $core.Map<$core.int, MsgSource> _byValue = $pb.ProtobufEnum.initByValue(values);
static MsgSource? valueOf($core.int value) => _byValue[value];
const MsgSource._(super.v, super.n);
}
/// 消息类型
class MsgType extends $pb.ProtobufEnum {
/// 基础消息类型
static const MsgType EN_INVALID_MSG_TYPE = MsgType._(0, _omitEnumNames ? '' : 'EN_INVALID_MSG_TYPE');
static const MsgType EN_MSG_TYPE_TEXT = MsgType._(1, _omitEnumNames ? '' : 'EN_MSG_TYPE_TEXT');
static const MsgType EN_MSG_TYPE_PIC = MsgType._(2, _omitEnumNames ? '' : 'EN_MSG_TYPE_PIC');
static const MsgType EN_MSG_TYPE_AUDIO = MsgType._(3, _omitEnumNames ? '' : 'EN_MSG_TYPE_AUDIO');
static const MsgType EN_MSG_TYPE_SHARE = MsgType._(4, _omitEnumNames ? '' : 'EN_MSG_TYPE_SHARE');
static const MsgType EN_MSG_TYPE_DRAW_BACK = MsgType._(5, _omitEnumNames ? '' : 'EN_MSG_TYPE_DRAW_BACK');
static const MsgType EN_MSG_TYPE_CUSTOM_FACE = MsgType._(6, _omitEnumNames ? '' : 'EN_MSG_TYPE_CUSTOM_FACE');
static const MsgType EN_MSG_TYPE_SHARE_V2 = MsgType._(7, _omitEnumNames ? '' : 'EN_MSG_TYPE_SHARE_V2');
static const MsgType EN_MSG_TYPE_SYS_CANCEL = MsgType._(8, _omitEnumNames ? '' : 'EN_MSG_TYPE_SYS_CANCEL');
static const MsgType EN_MSG_TYPE_MINI_PROGRAM = MsgType._(9, _omitEnumNames ? '' : 'EN_MSG_TYPE_MINI_PROGRAM');
/// 扩展消息类型
static const MsgType EN_MSG_TYPE_NOTIFY_MSG = MsgType._(10, _omitEnumNames ? '' : 'EN_MSG_TYPE_NOTIFY_MSG');
static const MsgType EN_MSG_TYPE_VIDEO_CARD = MsgType._(11, _omitEnumNames ? '' : 'EN_MSG_TYPE_VIDEO_CARD');
static const MsgType EN_MSG_TYPE_ARTICLE_CARD = MsgType._(12, _omitEnumNames ? '' : 'EN_MSG_TYPE_ARTICLE_CARD');
static const MsgType EN_MSG_TYPE_PICTURE_CARD = MsgType._(13, _omitEnumNames ? '' : 'EN_MSG_TYPE_PICTURE_CARD');
static const MsgType EN_MSG_TYPE_COMMON_SHARE_CARD = MsgType._(14, _omitEnumNames ? '' : 'EN_MSG_TYPE_COMMON_SHARE_CARD');
static const MsgType EN_MSG_TYPE_BIZ_MSG_TYPE = MsgType._(50, _omitEnumNames ? '' : 'EN_MSG_TYPE_BIZ_MSG_TYPE');
static const MsgType EN_MSG_TYPE_MODIFY_MSG_TYPE = MsgType._(51, _omitEnumNames ? '' : 'EN_MSG_TYPE_MODIFY_MSG_TYPE');
/// 功能类系统消息类型
static const MsgType EN_MSG_TYPE_GROUP_MEMBER_CHANGED = MsgType._(101, _omitEnumNames ? '' : 'EN_MSG_TYPE_GROUP_MEMBER_CHANGED');
static const MsgType EN_MSG_TYPE_GROUP_STATUS_CHANGED = MsgType._(102, _omitEnumNames ? '' : 'EN_MSG_TYPE_GROUP_STATUS_CHANGED');
static const MsgType EN_MSG_TYPE_GROUP_DYNAMIC_CHANGED = MsgType._(103, _omitEnumNames ? '' : 'EN_MSG_TYPE_GROUP_DYNAMIC_CHANGED');
static const MsgType EN_MSG_TYPE_GROUP_LIST_CHANGED = MsgType._(104, _omitEnumNames ? '' : 'EN_MSG_TYPE_GROUP_LIST_CHANGED');
static const MsgType EM_MSG_TYPE_FRIEND_LIST_CHANGED = MsgType._(105, _omitEnumNames ? '' : 'EM_MSG_TYPE_FRIEND_LIST_CHANGED');
static const MsgType EN_MSG_TYPE_GROUP_DETAIL_CHANGED = MsgType._(106, _omitEnumNames ? '' : 'EN_MSG_TYPE_GROUP_DETAIL_CHANGED');
static const MsgType EN_MSG_TYPE_GROUP_MEMBER_ROLE_CHANGED = MsgType._(107, _omitEnumNames ? '' : 'EN_MSG_TYPE_GROUP_MEMBER_ROLE_CHANGED');
static const MsgType EN_MSG_TYPE_NOTICE_WATCH_LIST = MsgType._(108, _omitEnumNames ? '' : 'EN_MSG_TYPE_NOTICE_WATCH_LIST');
static const MsgType EN_MSG_TYPE_NOTIFY_NEW_REPLY_RECIEVED = MsgType._(109, _omitEnumNames ? '' : 'EN_MSG_TYPE_NOTIFY_NEW_REPLY_RECIEVED');
static const MsgType EN_MSG_TYPE_NOTIFY_NEW_AT_RECIEVED = MsgType._(110, _omitEnumNames ? '' : 'EN_MSG_TYPE_NOTIFY_NEW_AT_RECIEVED');
static const MsgType EN_MSG_TYPE_NOTIFY_NEW_PRAISE_RECIEVED = MsgType._(111, _omitEnumNames ? '' : 'EN_MSG_TYPE_NOTIFY_NEW_PRAISE_RECIEVED');
static const MsgType EN_MSG_TYPE_NOTIFY_NEW_UP_RECIEVED = MsgType._(112, _omitEnumNames ? '' : 'EN_MSG_TYPE_NOTIFY_NEW_UP_RECIEVED');
static const MsgType EN_MSG_TYPE_NOTIFY_NEW_REPLY_RECIEVED_V2 = MsgType._(113, _omitEnumNames ? '' : 'EN_MSG_TYPE_NOTIFY_NEW_REPLY_RECIEVED_V2');
static const MsgType EN_MSG_TYPE_NOTIFY_NEW_AT_RECIEVED_V2 = MsgType._(114, _omitEnumNames ? '' : 'EN_MSG_TYPE_NOTIFY_NEW_AT_RECIEVED_V2');
static const MsgType EN_MSG_TYPE_NOTIFY_NEW_PRAISE_RECIEVED_V2 = MsgType._(115, _omitEnumNames ? '' : 'EN_MSG_TYPE_NOTIFY_NEW_PRAISE_RECIEVED_V2');
static const MsgType EN_MSG_TYPE_GROUP_DETAIL_CHANGED_MULTI = MsgType._(116, _omitEnumNames ? '' : 'EN_MSG_TYPE_GROUP_DETAIL_CHANGED_MULTI');
static const MsgType EN_MSG_TYPE_GROUP_MEMBER_ROLE_CHANGED_MULTI = MsgType._(117, _omitEnumNames ? '' : 'EN_MSG_TYPE_GROUP_MEMBER_ROLE_CHANGED_MULTI');
static const MsgType EN_MSG_TYPE_NOTIFY_ANTI_DISTURB = MsgType._(118, _omitEnumNames ? '' : 'EN_MSG_TYPE_NOTIFY_ANTI_DISTURB');
/// 系统通知栏消息类型
static const MsgType EN_MSG_TYPE_SYS_GROUP_DISSOLVED = MsgType._(201, _omitEnumNames ? '' : 'EN_MSG_TYPE_SYS_GROUP_DISSOLVED');
static const MsgType EN_MSG_TYPE_SYS_GROUP_JOINED = MsgType._(202, _omitEnumNames ? '' : 'EN_MSG_TYPE_SYS_GROUP_JOINED');
static const MsgType EN_MSG_TYPE_SYS_GROUP_MEMBER_EXITED = MsgType._(203, _omitEnumNames ? '' : 'EN_MSG_TYPE_SYS_GROUP_MEMBER_EXITED');
static const MsgType EN_MSG_TYPE_SYS_GROUP_ADMIN_FIRED = MsgType._(204, _omitEnumNames ? '' : 'EN_MSG_TYPE_SYS_GROUP_ADMIN_FIRED');
static const MsgType EN_MSG_TYPE_SYS_GROUP_MEMBER_KICKED = MsgType._(205, _omitEnumNames ? '' : 'EN_MSG_TYPE_SYS_GROUP_MEMBER_KICKED');
static const MsgType EN_MSG_TYPE_SYS_GROUP_ADMIN_KICK_OFF = MsgType._(206, _omitEnumNames ? '' : 'EN_MSG_TYPE_SYS_GROUP_ADMIN_KICK_OFF');
static const MsgType EN_MSG_TYPE_SYS_GROUP_ADMIN_DUTY = MsgType._(207, _omitEnumNames ? '' : 'EN_MSG_TYPE_SYS_GROUP_ADMIN_DUTY');
static const MsgType EN_MSG_TYPE_SYS_GROUP_AUTO_CREATED = MsgType._(208, _omitEnumNames ? '' : 'EN_MSG_TYPE_SYS_GROUP_AUTO_CREATED');
static const MsgType EN_MSG_TYPE_SYS_FRIEND_APPLY = MsgType._(210, _omitEnumNames ? '' : 'EN_MSG_TYPE_SYS_FRIEND_APPLY');
static const MsgType EN_MSG_TYPE_SYS_FRIEND_APPLY_ACK = MsgType._(211, _omitEnumNames ? '' : 'EN_MSG_TYPE_SYS_FRIEND_APPLY_ACK');
static const MsgType EN_MSG_TYPE_SYS_GROUP_APPLY_FOR_JOINING = MsgType._(212, _omitEnumNames ? '' : 'EN_MSG_TYPE_SYS_GROUP_APPLY_FOR_JOINING');
static const MsgType EN_MSG_TYPE_SYS_GROUP_ADMIN_ACCEPTED_USER_APPLY = MsgType._(213, _omitEnumNames ? '' : 'EN_MSG_TYPE_SYS_GROUP_ADMIN_ACCEPTED_USER_APPLY');
/// 聊天窗口通知消息类型
static const MsgType EN_MSG_TYPE_CHAT_MEMBER_JOINED = MsgType._(301, _omitEnumNames ? '' : 'EN_MSG_TYPE_CHAT_MEMBER_JOINED');
static const MsgType EN_MSG_TYPE_CHAT_MEMBER_EXITED = MsgType._(302, _omitEnumNames ? '' : 'EN_MSG_TYPE_CHAT_MEMBER_EXITED');
static const MsgType EN_MSG_TYPE_CHAT_GROUP_FREEZED = MsgType._(303, _omitEnumNames ? '' : 'EN_MSG_TYPE_CHAT_GROUP_FREEZED');
static const MsgType EN_MSG_TYPE_CHAT_GROUP_DISSOLVED = MsgType._(304, _omitEnumNames ? '' : 'EN_MSG_TYPE_CHAT_GROUP_DISSOLVED');
static const MsgType EN_MSG_TYPE_CHAT_GROUP_CREATED = MsgType._(305, _omitEnumNames ? '' : 'EN_MSG_TYPE_CHAT_GROUP_CREATED');
static const MsgType EN_MSG_TYPE_CHAT_POPUP_SESSION = MsgType._(306, _omitEnumNames ? '' : 'EN_MSG_TYPE_CHAT_POPUP_SESSION');
static const $core.List<MsgType> values = <MsgType> [
EN_INVALID_MSG_TYPE,
EN_MSG_TYPE_TEXT,
EN_MSG_TYPE_PIC,
EN_MSG_TYPE_AUDIO,
EN_MSG_TYPE_SHARE,
EN_MSG_TYPE_DRAW_BACK,
EN_MSG_TYPE_CUSTOM_FACE,
EN_MSG_TYPE_SHARE_V2,
EN_MSG_TYPE_SYS_CANCEL,
EN_MSG_TYPE_MINI_PROGRAM,
EN_MSG_TYPE_NOTIFY_MSG,
EN_MSG_TYPE_VIDEO_CARD,
EN_MSG_TYPE_ARTICLE_CARD,
EN_MSG_TYPE_PICTURE_CARD,
EN_MSG_TYPE_COMMON_SHARE_CARD,
EN_MSG_TYPE_BIZ_MSG_TYPE,
EN_MSG_TYPE_MODIFY_MSG_TYPE,
EN_MSG_TYPE_GROUP_MEMBER_CHANGED,
EN_MSG_TYPE_GROUP_STATUS_CHANGED,
EN_MSG_TYPE_GROUP_DYNAMIC_CHANGED,
EN_MSG_TYPE_GROUP_LIST_CHANGED,
EM_MSG_TYPE_FRIEND_LIST_CHANGED,
EN_MSG_TYPE_GROUP_DETAIL_CHANGED,
EN_MSG_TYPE_GROUP_MEMBER_ROLE_CHANGED,
EN_MSG_TYPE_NOTICE_WATCH_LIST,
EN_MSG_TYPE_NOTIFY_NEW_REPLY_RECIEVED,
EN_MSG_TYPE_NOTIFY_NEW_AT_RECIEVED,
EN_MSG_TYPE_NOTIFY_NEW_PRAISE_RECIEVED,
EN_MSG_TYPE_NOTIFY_NEW_UP_RECIEVED,
EN_MSG_TYPE_NOTIFY_NEW_REPLY_RECIEVED_V2,
EN_MSG_TYPE_NOTIFY_NEW_AT_RECIEVED_V2,
EN_MSG_TYPE_NOTIFY_NEW_PRAISE_RECIEVED_V2,
EN_MSG_TYPE_GROUP_DETAIL_CHANGED_MULTI,
EN_MSG_TYPE_GROUP_MEMBER_ROLE_CHANGED_MULTI,
EN_MSG_TYPE_NOTIFY_ANTI_DISTURB,
EN_MSG_TYPE_SYS_GROUP_DISSOLVED,
EN_MSG_TYPE_SYS_GROUP_JOINED,
EN_MSG_TYPE_SYS_GROUP_MEMBER_EXITED,
EN_MSG_TYPE_SYS_GROUP_ADMIN_FIRED,
EN_MSG_TYPE_SYS_GROUP_MEMBER_KICKED,
EN_MSG_TYPE_SYS_GROUP_ADMIN_KICK_OFF,
EN_MSG_TYPE_SYS_GROUP_ADMIN_DUTY,
EN_MSG_TYPE_SYS_GROUP_AUTO_CREATED,
EN_MSG_TYPE_SYS_FRIEND_APPLY,
EN_MSG_TYPE_SYS_FRIEND_APPLY_ACK,
EN_MSG_TYPE_SYS_GROUP_APPLY_FOR_JOINING,
EN_MSG_TYPE_SYS_GROUP_ADMIN_ACCEPTED_USER_APPLY,
EN_MSG_TYPE_CHAT_MEMBER_JOINED,
EN_MSG_TYPE_CHAT_MEMBER_EXITED,
EN_MSG_TYPE_CHAT_GROUP_FREEZED,
EN_MSG_TYPE_CHAT_GROUP_DISSOLVED,
EN_MSG_TYPE_CHAT_GROUP_CREATED,
EN_MSG_TYPE_CHAT_POPUP_SESSION,
];
static final $core.Map<$core.int, MsgType> _byValue = $pb.ProtobufEnum.initByValue(values);
static MsgType? valueOf($core.int value) => _byValue[value];
const MsgType._(super.v, super.n);
}
/// 接收方类型
class RecverType extends $pb.ProtobufEnum {
static const RecverType EN_NO_MEANING = RecverType._(0, _omitEnumNames ? '' : 'EN_NO_MEANING');
static const RecverType EN_RECVER_TYPE_PEER = RecverType._(1, _omitEnumNames ? '' : 'EN_RECVER_TYPE_PEER');
static const RecverType EN_RECVER_TYPE_GROUP = RecverType._(2, _omitEnumNames ? '' : 'EN_RECVER_TYPE_GROUP');
static const RecverType EN_RECVER_TYPE_PEERS = RecverType._(3, _omitEnumNames ? '' : 'EN_RECVER_TYPE_PEERS');
static const $core.List<RecverType> values = <RecverType> [
EN_NO_MEANING,
EN_RECVER_TYPE_PEER,
EN_RECVER_TYPE_GROUP,
EN_RECVER_TYPE_PEERS,
];
static final $core.Map<$core.int, RecverType> _byValue = $pb.ProtobufEnum.initByValue(values);
static RecverType? valueOf($core.int value) => _byValue[value];
const RecverType._(super.v, super.n);
}
class RelationLogType extends $pb.ProtobufEnum {
static const RelationLogType EN_INVALID_LOG_TYPE = RelationLogType._(0, _omitEnumNames ? '' : 'EN_INVALID_LOG_TYPE');
static const RelationLogType EN_ADD_FRIEND = RelationLogType._(1, _omitEnumNames ? '' : 'EN_ADD_FRIEND');
static const RelationLogType EN_REMOVE_FRIEND = RelationLogType._(2, _omitEnumNames ? '' : 'EN_REMOVE_FRIEND');
static const RelationLogType EN_JOIN_GROUP = RelationLogType._(3, _omitEnumNames ? '' : 'EN_JOIN_GROUP');
static const RelationLogType EN_EXIT_GROUP = RelationLogType._(4, _omitEnumNames ? '' : 'EN_EXIT_GROUP');
static const $core.List<RelationLogType> values = <RelationLogType> [
EN_INVALID_LOG_TYPE,
EN_ADD_FRIEND,
EN_REMOVE_FRIEND,
EN_JOIN_GROUP,
EN_EXIT_GROUP,
];
static final $core.Map<$core.int, RelationLogType> _byValue = $pb.ProtobufEnum.initByValue(values);
static RelationLogType? valueOf($core.int value) => _byValue[value];
const RelationLogType._(super.v, super.n);
}
class SESSION_TYPE extends $pb.ProtobufEnum {
static const SESSION_TYPE INVALID_SESSION_TYPE = SESSION_TYPE._(0, _omitEnumNames ? '' : 'INVALID_SESSION_TYPE');
static const SESSION_TYPE UN_FOLD_SESSION = SESSION_TYPE._(1, _omitEnumNames ? '' : 'UN_FOLD_SESSION');
static const SESSION_TYPE UN_FOLLOW_SINGLE_SESSION = SESSION_TYPE._(2, _omitEnumNames ? '' : 'UN_FOLLOW_SINGLE_SESSION');
static const SESSION_TYPE MY_GROUP_SESSION = SESSION_TYPE._(3, _omitEnumNames ? '' : 'MY_GROUP_SESSION');
static const SESSION_TYPE ALL_SESSION = SESSION_TYPE._(4, _omitEnumNames ? '' : 'ALL_SESSION');
static const $core.List<SESSION_TYPE> values = <SESSION_TYPE> [
INVALID_SESSION_TYPE,
UN_FOLD_SESSION,
UN_FOLLOW_SINGLE_SESSION,
MY_GROUP_SESSION,
ALL_SESSION,
];
static final $core.Map<$core.int, SESSION_TYPE> _byValue = $pb.ProtobufEnum.initByValue(values);
static SESSION_TYPE? valueOf($core.int value) => _byValue[value];
const SESSION_TYPE._(super.v, super.n);
}
const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names');

View File

@@ -0,0 +1,522 @@
//
// Generated code. Do not modify.
// source: bilibili/im/type/im.proto
//
// @dart = 3.3
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
// ignore_for_file: constant_identifier_names, library_prefixes
// ignore_for_file: non_constant_identifier_names, prefer_final_fields
// ignore_for_file: unnecessary_import, unnecessary_this, unused_import
import 'dart:convert' as $convert;
import 'dart:core' as $core;
import 'dart:typed_data' as $typed_data;
@$core.Deprecated('Use cmdIdDescriptor instead')
const CmdId$json = {
'1': 'CmdId',
'2': [
{'1': 'EN_CMD_ID_INVALID', '2': 0},
{'1': 'EN_CMD_ID_SEND_MSG', '2': 200001},
{'1': 'EN_CMD_ID_SYNC_MSG', '2': 500001},
{'1': 'EN_CMD_ID_SYNC_RELATION', '2': 500002},
{'1': 'EN_CMD_ID_SYNC_ACK', '2': 500003},
{'1': 'EN_CMD_ID_SYNC_FETCH_SESSION_MSGS', '2': 500006},
{'1': 'EN_CMD_ID_SESSION_SVR_GET_SESSIONS', '2': 1000001},
{'1': 'EN_CMD_ID_SESSION_SVR_NEW_SESSIONS', '2': 1000002},
{'1': 'EN_CMD_ID_SESSION_SVR_ACK_SESSIONS', '2': 1000003},
{'1': 'EN_CMD_ID_SESSION_SVR_UPDATE_ACK', '2': 1000004},
{'1': 'EN_CMD_ID_SESSION_SVR_SET_TOP', '2': 1000005},
{'1': 'EN_CMD_ID_SESSION_SVR_REMOVE_SESSION', '2': 1000007},
{'1': 'EN_CMD_ID_SESSION_SVR_SINGLE_UNREAD', '2': 1000008},
{'1': 'EN_CMD_ID_SESSION_SVR_MY_GROUP_UNREAD', '2': 1000009},
{'1': 'EN_CMD_ID_SESSION_SVR_UPDATE_UNFLW_READ', '2': 1000010},
{'1': 'EN_CMD_ID_SESSION_SVR_GROUP_ASSIS_MSG', '2': 1000011},
{'1': 'EN_CMD_ID_SESSION_SVR_ACK_ASSIS_MSG', '2': 1000012},
{'1': 'EN_CMD_ID_SESSION_SVR_SESSION_DETAIL', '2': 1000015},
{'1': 'EN_CMD_ID_SESSION_SVR_BATCH_SESS_DETAIL', '2': 1000016},
{'1': 'EN_CMD_ID_SESSION_SVR_BATCH_RM_SESSIONS', '2': 1000017},
],
};
/// Descriptor for `CmdId`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List cmdIdDescriptor = $convert.base64Decode(
'CgVDbWRJZBIVChFFTl9DTURfSURfSU5WQUxJRBAAEhgKEkVOX0NNRF9JRF9TRU5EX01TRxDBmg'
'wSGAoSRU5fQ01EX0lEX1NZTkNfTVNHEKHCHhIdChdFTl9DTURfSURfU1lOQ19SRUxBVElPThCi'
'wh4SGAoSRU5fQ01EX0lEX1NZTkNfQUNLEKPCHhInCiFFTl9DTURfSURfU1lOQ19GRVRDSF9TRV'
'NTSU9OX01TR1MQpsIeEigKIkVOX0NNRF9JRF9TRVNTSU9OX1NWUl9HRVRfU0VTU0lPTlMQwYQ9'
'EigKIkVOX0NNRF9JRF9TRVNTSU9OX1NWUl9ORVdfU0VTU0lPTlMQwoQ9EigKIkVOX0NNRF9JRF'
'9TRVNTSU9OX1NWUl9BQ0tfU0VTU0lPTlMQw4Q9EiYKIEVOX0NNRF9JRF9TRVNTSU9OX1NWUl9V'
'UERBVEVfQUNLEMSEPRIjCh1FTl9DTURfSURfU0VTU0lPTl9TVlJfU0VUX1RPUBDFhD0SKgokRU'
'5fQ01EX0lEX1NFU1NJT05fU1ZSX1JFTU9WRV9TRVNTSU9OEMeEPRIpCiNFTl9DTURfSURfU0VT'
'U0lPTl9TVlJfU0lOR0xFX1VOUkVBRBDIhD0SKwolRU5fQ01EX0lEX1NFU1NJT05fU1ZSX01ZX0'
'dST1VQX1VOUkVBRBDJhD0SLQonRU5fQ01EX0lEX1NFU1NJT05fU1ZSX1VQREFURV9VTkZMV19S'
'RUFEEMqEPRIrCiVFTl9DTURfSURfU0VTU0lPTl9TVlJfR1JPVVBfQVNTSVNfTVNHEMuEPRIpCi'
'NFTl9DTURfSURfU0VTU0lPTl9TVlJfQUNLX0FTU0lTX01TRxDMhD0SKgokRU5fQ01EX0lEX1NF'
'U1NJT05fU1ZSX1NFU1NJT05fREVUQUlMEM+EPRItCidFTl9DTURfSURfU0VTU0lPTl9TVlJfQk'
'FUQ0hfU0VTU19ERVRBSUwQ0IQ9Ei0KJ0VOX0NNRF9JRF9TRVNTSU9OX1NWUl9CQVRDSF9STV9T'
'RVNTSU9OUxDRhD0=');
@$core.Deprecated('Use eNUM_BIZ_MSG_TYPEDescriptor instead')
const ENUM_BIZ_MSG_TYPE$json = {
'1': 'ENUM_BIZ_MSG_TYPE',
'2': [
{'1': 'BIZ_MSG_TYPE_NORMAL', '2': 0},
{'1': 'BIZ_MSG_TYPE_CARD_VIDEO', '2': 1},
],
};
/// Descriptor for `ENUM_BIZ_MSG_TYPE`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List eNUM_BIZ_MSG_TYPEDescriptor = $convert.base64Decode(
'ChFFTlVNX0JJWl9NU0dfVFlQRRIXChNCSVpfTVNHX1RZUEVfTk9STUFMEAASGwoXQklaX01TR1'
'9UWVBFX0NBUkRfVklERU8QAQ==');
@$core.Deprecated('Use msgSourceDescriptor instead')
const MsgSource$json = {
'1': 'MsgSource',
'2': [
{'1': 'EN_MSG_SOURCE_UNKONW', '2': 0},
{'1': 'EN_MSG_SOURCE_IOS', '2': 1},
{'1': 'EN_MSG_SOURCE_ANDRIOD', '2': 2},
{'1': 'EN_MSG_SOURCE_H5', '2': 3},
{'1': 'EN_MSG_SOURCE_PC', '2': 4},
{'1': 'EN_MSG_SOURCE_BACKSTAGE', '2': 5},
{'1': 'EN_MSG_SOURCE_BIZ', '2': 6},
{'1': 'EN_MSG_SOURCE_WEB', '2': 7},
{'1': 'EN_MSG_SOURCE_AUTOREPLY_BY_FOLLOWED', '2': 8},
{'1': 'EN_MSG_SOURCE_AUTOREPLY_BY_RECEIVE_MSG', '2': 9},
{'1': 'EN_MSG_SOURCE_AUTOREPLY_BY_KEYWORDS', '2': 10},
{'1': 'EN_MSG_SOURCE_AUTOREPLY_BY_VOYAGE', '2': 11},
{'1': 'EN_MSG_SOURCE_VC_ATTACH_MSG', '2': 12},
],
};
/// Descriptor for `MsgSource`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List msgSourceDescriptor = $convert.base64Decode(
'CglNc2dTb3VyY2USGAoURU5fTVNHX1NPVVJDRV9VTktPTlcQABIVChFFTl9NU0dfU09VUkNFX0'
'lPUxABEhkKFUVOX01TR19TT1VSQ0VfQU5EUklPRBACEhQKEEVOX01TR19TT1VSQ0VfSDUQAxIU'
'ChBFTl9NU0dfU09VUkNFX1BDEAQSGwoXRU5fTVNHX1NPVVJDRV9CQUNLU1RBR0UQBRIVChFFTl'
'9NU0dfU09VUkNFX0JJWhAGEhUKEUVOX01TR19TT1VSQ0VfV0VCEAcSJwojRU5fTVNHX1NPVVJD'
'RV9BVVRPUkVQTFlfQllfRk9MTE9XRUQQCBIqCiZFTl9NU0dfU09VUkNFX0FVVE9SRVBMWV9CWV'
'9SRUNFSVZFX01TRxAJEicKI0VOX01TR19TT1VSQ0VfQVVUT1JFUExZX0JZX0tFWVdPUkRTEAoS'
'JQohRU5fTVNHX1NPVVJDRV9BVVRPUkVQTFlfQllfVk9ZQUdFEAsSHwobRU5fTVNHX1NPVVJDRV'
'9WQ19BVFRBQ0hfTVNHEAw=');
@$core.Deprecated('Use msgTypeDescriptor instead')
const MsgType$json = {
'1': 'MsgType',
'2': [
{'1': 'EN_INVALID_MSG_TYPE', '2': 0},
{'1': 'EN_MSG_TYPE_TEXT', '2': 1},
{'1': 'EN_MSG_TYPE_PIC', '2': 2},
{'1': 'EN_MSG_TYPE_AUDIO', '2': 3},
{'1': 'EN_MSG_TYPE_SHARE', '2': 4},
{'1': 'EN_MSG_TYPE_DRAW_BACK', '2': 5},
{'1': 'EN_MSG_TYPE_CUSTOM_FACE', '2': 6},
{'1': 'EN_MSG_TYPE_SHARE_V2', '2': 7},
{'1': 'EN_MSG_TYPE_SYS_CANCEL', '2': 8},
{'1': 'EN_MSG_TYPE_MINI_PROGRAM', '2': 9},
{'1': 'EN_MSG_TYPE_NOTIFY_MSG', '2': 10},
{'1': 'EN_MSG_TYPE_VIDEO_CARD', '2': 11},
{'1': 'EN_MSG_TYPE_ARTICLE_CARD', '2': 12},
{'1': 'EN_MSG_TYPE_PICTURE_CARD', '2': 13},
{'1': 'EN_MSG_TYPE_COMMON_SHARE_CARD', '2': 14},
{'1': 'EN_MSG_TYPE_BIZ_MSG_TYPE', '2': 50},
{'1': 'EN_MSG_TYPE_MODIFY_MSG_TYPE', '2': 51},
{'1': 'EN_MSG_TYPE_GROUP_MEMBER_CHANGED', '2': 101},
{'1': 'EN_MSG_TYPE_GROUP_STATUS_CHANGED', '2': 102},
{'1': 'EN_MSG_TYPE_GROUP_DYNAMIC_CHANGED', '2': 103},
{'1': 'EN_MSG_TYPE_GROUP_LIST_CHANGED', '2': 104},
{'1': 'EM_MSG_TYPE_FRIEND_LIST_CHANGED', '2': 105},
{'1': 'EN_MSG_TYPE_GROUP_DETAIL_CHANGED', '2': 106},
{'1': 'EN_MSG_TYPE_GROUP_MEMBER_ROLE_CHANGED', '2': 107},
{'1': 'EN_MSG_TYPE_NOTICE_WATCH_LIST', '2': 108},
{'1': 'EN_MSG_TYPE_NOTIFY_NEW_REPLY_RECIEVED', '2': 109},
{'1': 'EN_MSG_TYPE_NOTIFY_NEW_AT_RECIEVED', '2': 110},
{'1': 'EN_MSG_TYPE_NOTIFY_NEW_PRAISE_RECIEVED', '2': 111},
{'1': 'EN_MSG_TYPE_NOTIFY_NEW_UP_RECIEVED', '2': 112},
{'1': 'EN_MSG_TYPE_NOTIFY_NEW_REPLY_RECIEVED_V2', '2': 113},
{'1': 'EN_MSG_TYPE_NOTIFY_NEW_AT_RECIEVED_V2', '2': 114},
{'1': 'EN_MSG_TYPE_NOTIFY_NEW_PRAISE_RECIEVED_V2', '2': 115},
{'1': 'EN_MSG_TYPE_GROUP_DETAIL_CHANGED_MULTI', '2': 116},
{'1': 'EN_MSG_TYPE_GROUP_MEMBER_ROLE_CHANGED_MULTI', '2': 117},
{'1': 'EN_MSG_TYPE_NOTIFY_ANTI_DISTURB', '2': 118},
{'1': 'EN_MSG_TYPE_SYS_GROUP_DISSOLVED', '2': 201},
{'1': 'EN_MSG_TYPE_SYS_GROUP_JOINED', '2': 202},
{'1': 'EN_MSG_TYPE_SYS_GROUP_MEMBER_EXITED', '2': 203},
{'1': 'EN_MSG_TYPE_SYS_GROUP_ADMIN_FIRED', '2': 204},
{'1': 'EN_MSG_TYPE_SYS_GROUP_MEMBER_KICKED', '2': 205},
{'1': 'EN_MSG_TYPE_SYS_GROUP_ADMIN_KICK_OFF', '2': 206},
{'1': 'EN_MSG_TYPE_SYS_GROUP_ADMIN_DUTY', '2': 207},
{'1': 'EN_MSG_TYPE_SYS_GROUP_AUTO_CREATED', '2': 208},
{'1': 'EN_MSG_TYPE_SYS_FRIEND_APPLY', '2': 210},
{'1': 'EN_MSG_TYPE_SYS_FRIEND_APPLY_ACK', '2': 211},
{'1': 'EN_MSG_TYPE_SYS_GROUP_APPLY_FOR_JOINING', '2': 212},
{'1': 'EN_MSG_TYPE_SYS_GROUP_ADMIN_ACCEPTED_USER_APPLY', '2': 213},
{'1': 'EN_MSG_TYPE_CHAT_MEMBER_JOINED', '2': 301},
{'1': 'EN_MSG_TYPE_CHAT_MEMBER_EXITED', '2': 302},
{'1': 'EN_MSG_TYPE_CHAT_GROUP_FREEZED', '2': 303},
{'1': 'EN_MSG_TYPE_CHAT_GROUP_DISSOLVED', '2': 304},
{'1': 'EN_MSG_TYPE_CHAT_GROUP_CREATED', '2': 305},
{'1': 'EN_MSG_TYPE_CHAT_POPUP_SESSION', '2': 306},
],
};
/// Descriptor for `MsgType`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List msgTypeDescriptor = $convert.base64Decode(
'CgdNc2dUeXBlEhcKE0VOX0lOVkFMSURfTVNHX1RZUEUQABIUChBFTl9NU0dfVFlQRV9URVhUEA'
'ESEwoPRU5fTVNHX1RZUEVfUElDEAISFQoRRU5fTVNHX1RZUEVfQVVESU8QAxIVChFFTl9NU0df'
'VFlQRV9TSEFSRRAEEhkKFUVOX01TR19UWVBFX0RSQVdfQkFDSxAFEhsKF0VOX01TR19UWVBFX0'
'NVU1RPTV9GQUNFEAYSGAoURU5fTVNHX1RZUEVfU0hBUkVfVjIQBxIaChZFTl9NU0dfVFlQRV9T'
'WVNfQ0FOQ0VMEAgSHAoYRU5fTVNHX1RZUEVfTUlOSV9QUk9HUkFNEAkSGgoWRU5fTVNHX1RZUE'
'VfTk9USUZZX01TRxAKEhoKFkVOX01TR19UWVBFX1ZJREVPX0NBUkQQCxIcChhFTl9NU0dfVFlQ'
'RV9BUlRJQ0xFX0NBUkQQDBIcChhFTl9NU0dfVFlQRV9QSUNUVVJFX0NBUkQQDRIhCh1FTl9NU0'
'dfVFlQRV9DT01NT05fU0hBUkVfQ0FSRBAOEhwKGEVOX01TR19UWVBFX0JJWl9NU0dfVFlQRRAy'
'Eh8KG0VOX01TR19UWVBFX01PRElGWV9NU0dfVFlQRRAzEiQKIEVOX01TR19UWVBFX0dST1VQX0'
'1FTUJFUl9DSEFOR0VEEGUSJAogRU5fTVNHX1RZUEVfR1JPVVBfU1RBVFVTX0NIQU5HRUQQZhIl'
'CiFFTl9NU0dfVFlQRV9HUk9VUF9EWU5BTUlDX0NIQU5HRUQQZxIiCh5FTl9NU0dfVFlQRV9HUk'
'9VUF9MSVNUX0NIQU5HRUQQaBIjCh9FTV9NU0dfVFlQRV9GUklFTkRfTElTVF9DSEFOR0VEEGkS'
'JAogRU5fTVNHX1RZUEVfR1JPVVBfREVUQUlMX0NIQU5HRUQQahIpCiVFTl9NU0dfVFlQRV9HUk'
'9VUF9NRU1CRVJfUk9MRV9DSEFOR0VEEGsSIQodRU5fTVNHX1RZUEVfTk9USUNFX1dBVENIX0xJ'
'U1QQbBIpCiVFTl9NU0dfVFlQRV9OT1RJRllfTkVXX1JFUExZX1JFQ0lFVkVEEG0SJgoiRU5fTV'
'NHX1RZUEVfTk9USUZZX05FV19BVF9SRUNJRVZFRBBuEioKJkVOX01TR19UWVBFX05PVElGWV9O'
'RVdfUFJBSVNFX1JFQ0lFVkVEEG8SJgoiRU5fTVNHX1RZUEVfTk9USUZZX05FV19VUF9SRUNJRV'
'ZFRBBwEiwKKEVOX01TR19UWVBFX05PVElGWV9ORVdfUkVQTFlfUkVDSUVWRURfVjIQcRIpCiVF'
'Tl9NU0dfVFlQRV9OT1RJRllfTkVXX0FUX1JFQ0lFVkVEX1YyEHISLQopRU5fTVNHX1RZUEVfTk'
'9USUZZX05FV19QUkFJU0VfUkVDSUVWRURfVjIQcxIqCiZFTl9NU0dfVFlQRV9HUk9VUF9ERVRB'
'SUxfQ0hBTkdFRF9NVUxUSRB0Ei8KK0VOX01TR19UWVBFX0dST1VQX01FTUJFUl9ST0xFX0NIQU'
'5HRURfTVVMVEkQdRIjCh9FTl9NU0dfVFlQRV9OT1RJRllfQU5USV9ESVNUVVJCEHYSJAofRU5f'
'TVNHX1RZUEVfU1lTX0dST1VQX0RJU1NPTFZFRBDJARIhChxFTl9NU0dfVFlQRV9TWVNfR1JPVV'
'BfSk9JTkVEEMoBEigKI0VOX01TR19UWVBFX1NZU19HUk9VUF9NRU1CRVJfRVhJVEVEEMsBEiYK'
'IUVOX01TR19UWVBFX1NZU19HUk9VUF9BRE1JTl9GSVJFRBDMARIoCiNFTl9NU0dfVFlQRV9TWV'
'NfR1JPVVBfTUVNQkVSX0tJQ0tFRBDNARIpCiRFTl9NU0dfVFlQRV9TWVNfR1JPVVBfQURNSU5f'
'S0lDS19PRkYQzgESJQogRU5fTVNHX1RZUEVfU1lTX0dST1VQX0FETUlOX0RVVFkQzwESJwoiRU'
'5fTVNHX1RZUEVfU1lTX0dST1VQX0FVVE9fQ1JFQVRFRBDQARIhChxFTl9NU0dfVFlQRV9TWVNf'
'RlJJRU5EX0FQUExZENIBEiUKIEVOX01TR19UWVBFX1NZU19GUklFTkRfQVBQTFlfQUNLENMBEi'
'wKJ0VOX01TR19UWVBFX1NZU19HUk9VUF9BUFBMWV9GT1JfSk9JTklORxDUARI0Ci9FTl9NU0df'
'VFlQRV9TWVNfR1JPVVBfQURNSU5fQUNDRVBURURfVVNFUl9BUFBMWRDVARIjCh5FTl9NU0dfVF'
'lQRV9DSEFUX01FTUJFUl9KT0lORUQQrQISIwoeRU5fTVNHX1RZUEVfQ0hBVF9NRU1CRVJfRVhJ'
'VEVEEK4CEiMKHkVOX01TR19UWVBFX0NIQVRfR1JPVVBfRlJFRVpFRBCvAhIlCiBFTl9NU0dfVF'
'lQRV9DSEFUX0dST1VQX0RJU1NPTFZFRBCwAhIjCh5FTl9NU0dfVFlQRV9DSEFUX0dST1VQX0NS'
'RUFURUQQsQISIwoeRU5fTVNHX1RZUEVfQ0hBVF9QT1BVUF9TRVNTSU9OELIC');
@$core.Deprecated('Use recverTypeDescriptor instead')
const RecverType$json = {
'1': 'RecverType',
'2': [
{'1': 'EN_NO_MEANING', '2': 0},
{'1': 'EN_RECVER_TYPE_PEER', '2': 1},
{'1': 'EN_RECVER_TYPE_GROUP', '2': 2},
{'1': 'EN_RECVER_TYPE_PEERS', '2': 3},
],
};
/// Descriptor for `RecverType`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List recverTypeDescriptor = $convert.base64Decode(
'CgpSZWN2ZXJUeXBlEhEKDUVOX05PX01FQU5JTkcQABIXChNFTl9SRUNWRVJfVFlQRV9QRUVSEA'
'ESGAoURU5fUkVDVkVSX1RZUEVfR1JPVVAQAhIYChRFTl9SRUNWRVJfVFlQRV9QRUVSUxAD');
@$core.Deprecated('Use relationLogTypeDescriptor instead')
const RelationLogType$json = {
'1': 'RelationLogType',
'2': [
{'1': 'EN_INVALID_LOG_TYPE', '2': 0},
{'1': 'EN_ADD_FRIEND', '2': 1},
{'1': 'EN_REMOVE_FRIEND', '2': 2},
{'1': 'EN_JOIN_GROUP', '2': 3},
{'1': 'EN_EXIT_GROUP', '2': 4},
],
};
/// Descriptor for `RelationLogType`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List relationLogTypeDescriptor = $convert.base64Decode(
'Cg9SZWxhdGlvbkxvZ1R5cGUSFwoTRU5fSU5WQUxJRF9MT0dfVFlQRRAAEhEKDUVOX0FERF9GUk'
'lFTkQQARIUChBFTl9SRU1PVkVfRlJJRU5EEAISEQoNRU5fSk9JTl9HUk9VUBADEhEKDUVOX0VY'
'SVRfR1JPVVAQBA==');
@$core.Deprecated('Use sESSION_TYPEDescriptor instead')
const SESSION_TYPE$json = {
'1': 'SESSION_TYPE',
'2': [
{'1': 'INVALID_SESSION_TYPE', '2': 0},
{'1': 'UN_FOLD_SESSION', '2': 1},
{'1': 'UN_FOLLOW_SINGLE_SESSION', '2': 2},
{'1': 'MY_GROUP_SESSION', '2': 3},
{'1': 'ALL_SESSION', '2': 4},
],
};
/// Descriptor for `SESSION_TYPE`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List sESSION_TYPEDescriptor = $convert.base64Decode(
'CgxTRVNTSU9OX1RZUEUSGAoUSU5WQUxJRF9TRVNTSU9OX1RZUEUQABITCg9VTl9GT0xEX1NFU1'
'NJT04QARIcChhVTl9GT0xMT1dfU0lOR0xFX1NFU1NJT04QAhIUChBNWV9HUk9VUF9TRVNTSU9O'
'EAMSDwoLQUxMX1NFU1NJT04QBA==');
@$core.Deprecated('Use accountInfoDescriptor instead')
const AccountInfo$json = {
'1': 'AccountInfo',
'2': [
{'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'},
{'1': 'pic_url', '3': 2, '4': 1, '5': 9, '10': 'picUrl'},
],
};
/// Descriptor for `AccountInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List accountInfoDescriptor = $convert.base64Decode(
'CgtBY2NvdW50SW5mbxISCgRuYW1lGAEgASgJUgRuYW1lEhcKB3BpY191cmwYAiABKAlSBnBpY1'
'VybA==');
@$core.Deprecated('Use friendRelationDescriptor instead')
const FriendRelation$json = {
'1': 'FriendRelation',
'2': [
{'1': 'uid', '3': 1, '4': 1, '5': 4, '10': 'uid'},
{'1': 'user_name', '3': 2, '4': 1, '5': 9, '10': 'userName'},
{'1': 'face', '3': 3, '4': 1, '5': 9, '10': 'face'},
{'1': 'vip_level', '3': 4, '4': 1, '5': 13, '10': 'vipLevel'},
],
};
/// Descriptor for `FriendRelation`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List friendRelationDescriptor = $convert.base64Decode(
'Cg5GcmllbmRSZWxhdGlvbhIQCgN1aWQYASABKARSA3VpZBIbCgl1c2VyX25hbWUYAiABKAlSCH'
'VzZXJOYW1lEhIKBGZhY2UYAyABKAlSBGZhY2USGwoJdmlwX2xldmVsGAQgASgNUgh2aXBMZXZl'
'bA==');
@$core.Deprecated('Use groupRelationDescriptor instead')
const GroupRelation$json = {
'1': 'GroupRelation',
'2': [
{'1': 'group_id', '3': 1, '4': 1, '5': 4, '10': 'groupId'},
{'1': 'owner_uid', '3': 2, '4': 1, '5': 4, '10': 'ownerUid'},
{'1': 'group_type', '3': 3, '4': 1, '5': 13, '10': 'groupType'},
{'1': 'group_level', '3': 4, '4': 1, '5': 13, '10': 'groupLevel'},
{'1': 'group_cover', '3': 5, '4': 1, '5': 9, '10': 'groupCover'},
{'1': 'group_name', '3': 6, '4': 1, '5': 9, '10': 'groupName'},
{'1': 'group_notice', '3': 7, '4': 1, '5': 9, '10': 'groupNotice'},
{'1': 'status', '3': 8, '4': 1, '5': 5, '10': 'status'},
{'1': 'member_role', '3': 9, '4': 1, '5': 5, '10': 'memberRole'},
{'1': 'fans_medal_name', '3': 10, '4': 1, '5': 9, '10': 'fansMedalName'},
{'1': 'room_id', '3': 11, '4': 1, '5': 4, '10': 'roomId'},
],
};
/// Descriptor for `GroupRelation`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List groupRelationDescriptor = $convert.base64Decode(
'Cg1Hcm91cFJlbGF0aW9uEhkKCGdyb3VwX2lkGAEgASgEUgdncm91cElkEhsKCW93bmVyX3VpZB'
'gCIAEoBFIIb3duZXJVaWQSHQoKZ3JvdXBfdHlwZRgDIAEoDVIJZ3JvdXBUeXBlEh8KC2dyb3Vw'
'X2xldmVsGAQgASgNUgpncm91cExldmVsEh8KC2dyb3VwX2NvdmVyGAUgASgJUgpncm91cENvdm'
'VyEh0KCmdyb3VwX25hbWUYBiABKAlSCWdyb3VwTmFtZRIhCgxncm91cF9ub3RpY2UYByABKAlS'
'C2dyb3VwTm90aWNlEhYKBnN0YXR1cxgIIAEoBVIGc3RhdHVzEh8KC21lbWJlcl9yb2xlGAkgAS'
'gFUgptZW1iZXJSb2xlEiYKD2ZhbnNfbWVkYWxfbmFtZRgKIAEoCVINZmFuc01lZGFsTmFtZRIX'
'Cgdyb29tX2lkGAsgASgEUgZyb29tSWQ=');
@$core.Deprecated('Use highTextDescriptor instead')
const HighText$json = {
'1': 'HighText',
'2': [
{'1': 'title', '3': 1, '4': 1, '5': 9, '10': 'title'},
{'1': 'url', '3': 2, '4': 1, '5': 9, '10': 'url'},
{'1': 'index', '3': 3, '4': 1, '5': 13, '10': 'index'},
],
};
/// Descriptor for `HighText`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List highTextDescriptor = $convert.base64Decode(
'CghIaWdoVGV4dBIUCgV0aXRsZRgBIAEoCVIFdGl0bGUSEAoDdXJsGAIgASgJUgN1cmwSFAoFaW'
'5kZXgYAyABKA1SBWluZGV4');
@$core.Deprecated('Use imgInfoDescriptor instead')
const ImgInfo$json = {
'1': 'ImgInfo',
'2': [
{'1': 'url', '3': 1, '4': 1, '5': 9, '10': 'url'},
{'1': 'width', '3': 2, '4': 1, '5': 5, '10': 'width'},
{'1': 'height', '3': 3, '4': 1, '5': 5, '10': 'height'},
{'1': 'imageType', '3': 4, '4': 1, '5': 9, '10': 'imageType'},
],
};
/// Descriptor for `ImgInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List imgInfoDescriptor = $convert.base64Decode(
'CgdJbWdJbmZvEhAKA3VybBgBIAEoCVIDdXJsEhQKBXdpZHRoGAIgASgFUgV3aWR0aBIWCgZoZW'
'lnaHQYAyABKAVSBmhlaWdodBIcCglpbWFnZVR5cGUYBCABKAlSCWltYWdlVHlwZQ==');
@$core.Deprecated('Use keyHitInfosDescriptor instead')
const KeyHitInfos$json = {
'1': 'KeyHitInfos',
'2': [
{'1': 'toast', '3': 1, '4': 1, '5': 9, '10': 'toast'},
{'1': 'rule_id', '3': 2, '4': 1, '5': 13, '10': 'ruleId'},
{'1': 'high_text', '3': 3, '4': 3, '5': 11, '6': '.bilibili.im.type.HighText', '10': 'highText'},
],
};
/// Descriptor for `KeyHitInfos`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List keyHitInfosDescriptor = $convert.base64Decode(
'CgtLZXlIaXRJbmZvcxIUCgV0b2FzdBgBIAEoCVIFdG9hc3QSFwoHcnVsZV9pZBgCIAEoDVIGcn'
'VsZUlkEjcKCWhpZ2hfdGV4dBgDIAMoCzIaLmJpbGliaWxpLmltLnR5cGUuSGlnaFRleHRSCGhp'
'Z2hUZXh0');
@$core.Deprecated('Use medalDescriptor instead')
const Medal$json = {
'1': 'Medal',
'2': [
{'1': 'uid', '3': 1, '4': 1, '5': 3, '10': 'uid'},
{'1': 'medal_id', '3': 2, '4': 1, '5': 5, '10': 'medalId'},
{'1': 'level', '3': 3, '4': 1, '5': 5, '10': 'level'},
{'1': 'medal_name', '3': 4, '4': 1, '5': 9, '10': 'medalName'},
{'1': 'score', '3': 5, '4': 1, '5': 5, '10': 'score'},
{'1': 'intimacy', '3': 6, '4': 1, '5': 5, '10': 'intimacy'},
{'1': 'master_status', '3': 7, '4': 1, '5': 5, '10': 'masterStatus'},
{'1': 'is_receive', '3': 8, '4': 1, '5': 5, '10': 'isReceive'},
{'1': 'medal_color_start', '3': 9, '4': 1, '5': 3, '10': 'medalColorStart'},
{'1': 'medal_color_end', '3': 10, '4': 1, '5': 3, '10': 'medalColorEnd'},
{'1': 'medal_color_border', '3': 11, '4': 1, '5': 3, '10': 'medalColorBorder'},
{'1': 'medal_color_name', '3': 12, '4': 1, '5': 3, '10': 'medalColorName'},
{'1': 'medal_color_level', '3': 13, '4': 1, '5': 3, '10': 'medalColorLevel'},
{'1': 'guard_level', '3': 14, '4': 1, '5': 3, '10': 'guardLevel'},
],
};
/// Descriptor for `Medal`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List medalDescriptor = $convert.base64Decode(
'CgVNZWRhbBIQCgN1aWQYASABKANSA3VpZBIZCghtZWRhbF9pZBgCIAEoBVIHbWVkYWxJZBIUCg'
'VsZXZlbBgDIAEoBVIFbGV2ZWwSHQoKbWVkYWxfbmFtZRgEIAEoCVIJbWVkYWxOYW1lEhQKBXNj'
'b3JlGAUgASgFUgVzY29yZRIaCghpbnRpbWFjeRgGIAEoBVIIaW50aW1hY3kSIwoNbWFzdGVyX3'
'N0YXR1cxgHIAEoBVIMbWFzdGVyU3RhdHVzEh0KCmlzX3JlY2VpdmUYCCABKAVSCWlzUmVjZWl2'
'ZRIqChFtZWRhbF9jb2xvcl9zdGFydBgJIAEoA1IPbWVkYWxDb2xvclN0YXJ0EiYKD21lZGFsX2'
'NvbG9yX2VuZBgKIAEoA1INbWVkYWxDb2xvckVuZBIsChJtZWRhbF9jb2xvcl9ib3JkZXIYCyAB'
'KANSEG1lZGFsQ29sb3JCb3JkZXISKAoQbWVkYWxfY29sb3JfbmFtZRgMIAEoA1IObWVkYWxDb2'
'xvck5hbWUSKgoRbWVkYWxfY29sb3JfbGV2ZWwYDSABKANSD21lZGFsQ29sb3JMZXZlbBIfCgtn'
'dWFyZF9sZXZlbBgOIAEoA1IKZ3VhcmRMZXZlbA==');
@$core.Deprecated('Use msgDescriptor instead')
const Msg$json = {
'1': 'Msg',
'2': [
{'1': 'sender_uid', '3': 1, '4': 1, '5': 4, '10': 'senderUid'},
{'1': 'receiver_type', '3': 2, '4': 1, '5': 14, '6': '.bilibili.im.type.RecverType', '10': 'receiverType'},
{'1': 'receiver_id', '3': 3, '4': 1, '5': 4, '10': 'receiverId'},
{'1': 'cli_msg_id', '3': 4, '4': 1, '5': 4, '10': 'cliMsgId'},
{'1': 'msg_type', '3': 5, '4': 1, '5': 14, '6': '.bilibili.im.type.MsgType', '10': 'msgType'},
{'1': 'content', '3': 6, '4': 1, '5': 9, '10': 'content'},
{'1': 'msg_seqno', '3': 7, '4': 1, '5': 4, '10': 'msgSeqno'},
{'1': 'timestamp', '3': 8, '4': 1, '5': 4, '10': 'timestamp'},
{'1': 'at_uids', '3': 9, '4': 3, '5': 4, '10': 'atUids'},
{'1': 'recver_ids', '3': 10, '4': 3, '5': 4, '10': 'recverIds'},
{'1': 'msg_key', '3': 11, '4': 1, '5': 4, '10': 'msgKey'},
{'1': 'msg_status', '3': 12, '4': 1, '5': 13, '10': 'msgStatus'},
{'1': 'sys_cancel', '3': 13, '4': 1, '5': 8, '10': 'sysCancel'},
{'1': 'notify_code', '3': 14, '4': 1, '5': 9, '10': 'notifyCode'},
{'1': 'msg_source', '3': 15, '4': 1, '5': 14, '6': '.bilibili.im.type.MsgSource', '10': 'msgSource'},
{'1': 'new_face_version', '3': 16, '4': 1, '5': 5, '10': 'newFaceVersion'},
{'1': 'key_hit_infos', '3': 17, '4': 1, '5': 11, '6': '.bilibili.im.type.KeyHitInfos', '10': 'keyHitInfos'},
],
};
/// Descriptor for `Msg`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List msgDescriptor = $convert.base64Decode(
'CgNNc2cSHQoKc2VuZGVyX3VpZBgBIAEoBFIJc2VuZGVyVWlkEkEKDXJlY2VpdmVyX3R5cGUYAi'
'ABKA4yHC5iaWxpYmlsaS5pbS50eXBlLlJlY3ZlclR5cGVSDHJlY2VpdmVyVHlwZRIfCgtyZWNl'
'aXZlcl9pZBgDIAEoBFIKcmVjZWl2ZXJJZBIcCgpjbGlfbXNnX2lkGAQgASgEUghjbGlNc2dJZB'
'I0Cghtc2dfdHlwZRgFIAEoDjIZLmJpbGliaWxpLmltLnR5cGUuTXNnVHlwZVIHbXNnVHlwZRIY'
'Cgdjb250ZW50GAYgASgJUgdjb250ZW50EhsKCW1zZ19zZXFubxgHIAEoBFIIbXNnU2Vxbm8SHA'
'oJdGltZXN0YW1wGAggASgEUgl0aW1lc3RhbXASFwoHYXRfdWlkcxgJIAMoBFIGYXRVaWRzEh0K'
'CnJlY3Zlcl9pZHMYCiADKARSCXJlY3ZlcklkcxIXCgdtc2dfa2V5GAsgASgEUgZtc2dLZXkSHQ'
'oKbXNnX3N0YXR1cxgMIAEoDVIJbXNnU3RhdHVzEh0KCnN5c19jYW5jZWwYDSABKAhSCXN5c0Nh'
'bmNlbBIfCgtub3RpZnlfY29kZRgOIAEoCVIKbm90aWZ5Q29kZRI6Cgptc2dfc291cmNlGA8gAS'
'gOMhsuYmlsaWJpbGkuaW0udHlwZS5Nc2dTb3VyY2VSCW1zZ1NvdXJjZRIoChBuZXdfZmFjZV92'
'ZXJzaW9uGBAgASgFUg5uZXdGYWNlVmVyc2lvbhJBCg1rZXlfaGl0X2luZm9zGBEgASgLMh0uYm'
'lsaWJpbGkuaW0udHlwZS5LZXlIaXRJbmZvc1ILa2V5SGl0SW5mb3M=');
@$core.Deprecated('Use relationLogDescriptor instead')
const RelationLog$json = {
'1': 'RelationLog',
'2': [
{'1': 'log_type', '3': 1, '4': 1, '5': 14, '6': '.bilibili.im.type.RelationLogType', '10': 'logType'},
{'1': 'oplog_seqno', '3': 2, '4': 1, '5': 4, '10': 'oplogSeqno'},
{'1': 'friend_relation', '3': 3, '4': 1, '5': 11, '6': '.bilibili.im.type.FriendRelation', '10': 'friendRelation'},
{'1': 'group_relation', '3': 4, '4': 1, '5': 11, '6': '.bilibili.im.type.GroupRelation', '10': 'groupRelation'},
],
};
/// Descriptor for `RelationLog`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List relationLogDescriptor = $convert.base64Decode(
'CgtSZWxhdGlvbkxvZxI8Cghsb2dfdHlwZRgBIAEoDjIhLmJpbGliaWxpLmltLnR5cGUuUmVsYX'
'Rpb25Mb2dUeXBlUgdsb2dUeXBlEh8KC29wbG9nX3NlcW5vGAIgASgEUgpvcGxvZ1NlcW5vEkkK'
'D2ZyaWVuZF9yZWxhdGlvbhgDIAEoCzIgLmJpbGliaWxpLmltLnR5cGUuRnJpZW5kUmVsYXRpb2'
'5SDmZyaWVuZFJlbGF0aW9uEkYKDmdyb3VwX3JlbGF0aW9uGAQgASgLMh8uYmlsaWJpbGkuaW0u'
'dHlwZS5Hcm91cFJlbGF0aW9uUg1ncm91cFJlbGF0aW9u');
@$core.Deprecated('Use sessionInfoDescriptor instead')
const SessionInfo$json = {
'1': 'SessionInfo',
'2': [
{'1': 'talker_id', '3': 1, '4': 1, '5': 4, '10': 'talkerId'},
{'1': 'session_type', '3': 2, '4': 1, '5': 13, '10': 'sessionType'},
{'1': 'at_seqno', '3': 3, '4': 1, '5': 4, '10': 'atSeqno'},
{'1': 'top_ts', '3': 4, '4': 1, '5': 4, '10': 'topTs'},
{'1': 'group_name', '3': 5, '4': 1, '5': 9, '10': 'groupName'},
{'1': 'group_cover', '3': 6, '4': 1, '5': 9, '10': 'groupCover'},
{'1': 'is_follow', '3': 7, '4': 1, '5': 13, '10': 'isFollow'},
{'1': 'is_dnd', '3': 8, '4': 1, '5': 13, '10': 'isDnd'},
{'1': 'ack_seqno', '3': 9, '4': 1, '5': 4, '10': 'ackSeqno'},
{'1': 'ack_ts', '3': 10, '4': 1, '5': 4, '10': 'ackTs'},
{'1': 'session_ts', '3': 11, '4': 1, '5': 4, '10': 'sessionTs'},
{'1': 'unread_count', '3': 12, '4': 1, '5': 13, '10': 'unreadCount'},
{'1': 'last_msg', '3': 13, '4': 1, '5': 11, '6': '.bilibili.im.type.Msg', '10': 'lastMsg'},
{'1': 'group_type', '3': 14, '4': 1, '5': 13, '10': 'groupType'},
{'1': 'can_fold', '3': 15, '4': 1, '5': 13, '10': 'canFold'},
{'1': 'status', '3': 16, '4': 1, '5': 13, '10': 'status'},
{'1': 'max_seqno', '3': 17, '4': 1, '5': 4, '10': 'maxSeqno'},
{'1': 'new_push_msg', '3': 18, '4': 1, '5': 13, '10': 'newPushMsg'},
{'1': 'setting', '3': 19, '4': 1, '5': 13, '10': 'setting'},
{'1': 'is_guardian', '3': 20, '4': 1, '5': 13, '10': 'isGuardian'},
{'1': 'is_intercept', '3': 21, '4': 1, '5': 5, '10': 'isIntercept'},
{'1': 'is_trust', '3': 22, '4': 1, '5': 5, '10': 'isTrust'},
{'1': 'system_msg_type', '3': 23, '4': 1, '5': 5, '10': 'systemMsgType'},
{'1': 'account_info', '3': 24, '4': 1, '5': 11, '6': '.bilibili.im.type.AccountInfo', '10': 'accountInfo'},
{'1': 'live_status', '3': 25, '4': 1, '5': 5, '10': 'liveStatus'},
{'1': 'biz_msg_unread_count', '3': 26, '4': 1, '5': 5, '10': 'bizMsgUnreadCount'},
{'1': 'user_label', '3': 27, '4': 1, '5': 11, '6': '.bilibili.im.type.UserLabel', '10': 'userLabel'},
],
};
/// Descriptor for `SessionInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List sessionInfoDescriptor = $convert.base64Decode(
'CgtTZXNzaW9uSW5mbxIbCgl0YWxrZXJfaWQYASABKARSCHRhbGtlcklkEiEKDHNlc3Npb25fdH'
'lwZRgCIAEoDVILc2Vzc2lvblR5cGUSGQoIYXRfc2Vxbm8YAyABKARSB2F0U2Vxbm8SFQoGdG9w'
'X3RzGAQgASgEUgV0b3BUcxIdCgpncm91cF9uYW1lGAUgASgJUglncm91cE5hbWUSHwoLZ3JvdX'
'BfY292ZXIYBiABKAlSCmdyb3VwQ292ZXISGwoJaXNfZm9sbG93GAcgASgNUghpc0ZvbGxvdxIV'
'CgZpc19kbmQYCCABKA1SBWlzRG5kEhsKCWFja19zZXFubxgJIAEoBFIIYWNrU2Vxbm8SFQoGYW'
'NrX3RzGAogASgEUgVhY2tUcxIdCgpzZXNzaW9uX3RzGAsgASgEUglzZXNzaW9uVHMSIQoMdW5y'
'ZWFkX2NvdW50GAwgASgNUgt1bnJlYWRDb3VudBIwCghsYXN0X21zZxgNIAEoCzIVLmJpbGliaW'
'xpLmltLnR5cGUuTXNnUgdsYXN0TXNnEh0KCmdyb3VwX3R5cGUYDiABKA1SCWdyb3VwVHlwZRIZ'
'CghjYW5fZm9sZBgPIAEoDVIHY2FuRm9sZBIWCgZzdGF0dXMYECABKA1SBnN0YXR1cxIbCgltYX'
'hfc2Vxbm8YESABKARSCG1heFNlcW5vEiAKDG5ld19wdXNoX21zZxgSIAEoDVIKbmV3UHVzaE1z'
'ZxIYCgdzZXR0aW5nGBMgASgNUgdzZXR0aW5nEh8KC2lzX2d1YXJkaWFuGBQgASgNUgppc0d1YX'
'JkaWFuEiEKDGlzX2ludGVyY2VwdBgVIAEoBVILaXNJbnRlcmNlcHQSGQoIaXNfdHJ1c3QYFiAB'
'KAVSB2lzVHJ1c3QSJgoPc3lzdGVtX21zZ190eXBlGBcgASgFUg1zeXN0ZW1Nc2dUeXBlEkAKDG'
'FjY291bnRfaW5mbxgYIAEoCzIdLmJpbGliaWxpLmltLnR5cGUuQWNjb3VudEluZm9SC2FjY291'
'bnRJbmZvEh8KC2xpdmVfc3RhdHVzGBkgASgFUgpsaXZlU3RhdHVzEi8KFGJpel9tc2dfdW5yZW'
'FkX2NvdW50GBogASgFUhFiaXpNc2dVbnJlYWRDb3VudBI6Cgp1c2VyX2xhYmVsGBsgASgLMhsu'
'YmlsaWJpbGkuaW0udHlwZS5Vc2VyTGFiZWxSCXVzZXJMYWJlbA==');
@$core.Deprecated('Use userLabelDescriptor instead')
const UserLabel$json = {
'1': 'UserLabel',
'2': [
{'1': 'label_type', '3': 1, '4': 1, '5': 5, '10': 'labelType'},
{'1': 'medal', '3': 2, '4': 1, '5': 11, '6': '.bilibili.im.type.Medal', '10': 'medal'},
{'1': 'guardian_relation', '3': 3, '4': 1, '5': 5, '10': 'guardianRelation'},
],
};
/// Descriptor for `UserLabel`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List userLabelDescriptor = $convert.base64Decode(
'CglVc2VyTGFiZWwSHQoKbGFiZWxfdHlwZRgBIAEoBVIJbGFiZWxUeXBlEi0KBW1lZGFsGAIgAS'
'gLMhcuYmlsaWJpbGkuaW0udHlwZS5NZWRhbFIFbWVkYWwSKwoRZ3VhcmRpYW5fcmVsYXRpb24Y'
'AyABKAVSEGd1YXJkaWFuUmVsYXRpb24=');

View File

@@ -523,16 +523,19 @@ class MsgHttp {
dynamic content,
}) async {
String csrf = Accounts.main.csrf;
final devId = getDevId();
Map<String, dynamic> base = {
'msg[sender_uid]': senderUid,
'msg[receiver_id]': receiverId,
'msg[receiver_type]': receiverType ?? 1,
'msg[msg_type]': msgType ?? 1,
'msg[msg_status]': 0,
'msg[dev_id]': getDevId(),
'msg[timestamp]': DateTime.now().millisecondsSinceEpoch ~/ 1000,
'msg[new_face_version]': 1,
'msg[content]': content,
'msg': {
'sender_uid': senderUid,
'receiver_id': receiverId,
'receiver_type': receiverType ?? 1,
'msg_type': msgType ?? 1,
'msg_status': 0,
'dev_id': devId,
'timestamp': DateTime.now().millisecondsSinceEpoch ~/ 1000,
'new_face_version': 1,
'content': content,
},
'from_firework': 0,
'build': 0,
'mobi_app': 'web',
@@ -540,15 +543,20 @@ class MsgHttp {
'csrf': csrf,
};
Map<String, dynamic> params = await WbiSign.makSign(base);
var res = await Request().post(Api.sendMsg,
queryParameters: <String, dynamic>{
'w_sender_uid': params['msg[sender_uid]'],
'w_receiver_id': params['msg[receiver_id]'],
'w_dev_id': params['msg[dev_id]'],
'w_rid': params['w_rid'],
'wts': params['wts'],
},
data: FormData.fromMap(base));
var res = await Request().post(
Api.sendMsg,
queryParameters: <String, dynamic>{
'w_sender_uid': senderUid,
'w_receiver_id': receiverId,
'w_dev_id': devId,
'w_rid': params['w_rid'],
'wts': params['wts'],
},
data: base,
options: Options(
contentType: Headers.formUrlEncodedContentType,
),
);
if (res.data['code'] == 0) {
return {
'status': true,

View File

@@ -265,6 +265,7 @@ class BangumiIntroController
mainAxisSize: MainAxisSize.min,
children: [
ListTile(
dense: true,
title: const Text(
'复制链接',
style: TextStyle(fontSize: 14),
@@ -275,6 +276,7 @@ class BangumiIntroController
},
),
ListTile(
dense: true,
title: const Text(
'其它app打开',
style: TextStyle(fontSize: 14),
@@ -285,6 +287,7 @@ class BangumiIntroController
},
),
ListTile(
dense: true,
title: const Text(
'分享视频',
style: TextStyle(fontSize: 14),
@@ -295,6 +298,7 @@ class BangumiIntroController
},
),
ListTile(
dense: true,
title: const Text(
'分享至动态',
style: TextStyle(fontSize: 14),
@@ -334,6 +338,29 @@ class BangumiIntroController
);
},
),
ListTile(
dense: true,
title: const Text(
'分享至消息',
style: TextStyle(fontSize: 14),
),
onTap: () {
Get.back();
try {
EpisodeItem item = bangumiItem!.episodes!
.firstWhere((item) => item.epId == epId);
PageUtils.pmShareVideo(
id: epId!,
source: 16,
cover: item.cover!,
title: '${bangumiItem!.title!} ${item.showTitle}',
url: item.shareUrl,
);
} catch (e) {
SmartDialog.showToast(e.toString());
}
},
),
],
),
);

View File

@@ -4,28 +4,17 @@ import 'package:PiliPlus/http/video.dart';
import 'package:PiliPlus/models/fans/result.dart';
import 'package:PiliPlus/pages/common/common_list_controller.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:PiliPlus/utils/storage.dart';
class FansController
extends CommonListController<FansDataModel, FansItemModel> {
FansController(this.mid);
int ps = 20;
int total = 0;
late int? mid;
late String? name;
dynamic userInfo;
late bool isOwner = false;
int mid;
@override
void onInit() {
super.onInit();
userInfo = GStorage.userInfo.get('userInfoCache');
mid = Get.parameters['mid'] != null
? int.parse(Get.parameters['mid']!)
: userInfo?.mid;
isOwner = mid == userInfo?.mid;
name = Get.parameters['name'] ?? userInfo?.uname;
queryData();
}

View File

@@ -4,6 +4,8 @@ import 'package:PiliPlus/common/widgets/network_img_layer.dart';
import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/fans/result.dart';
import 'package:PiliPlus/pages/video/detail/share/view.dart' show UserModel;
import 'package:PiliPlus/utils/storage.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -13,31 +15,44 @@ import '../../utils/grid.dart';
import 'controller.dart';
class FansPage extends StatefulWidget {
const FansPage({super.key});
const FansPage({
super.key,
this.mid,
this.onSelect,
});
final int? mid;
final ValueChanged<UserModel>? onSelect;
@override
State<FansPage> createState() => _FansPageState();
}
class _FansPageState extends State<FansPage> {
late String mid;
late int mid;
String? name;
late bool isOwner;
late FansController _fansController;
@override
void initState() {
super.initState();
mid = Get.parameters['mid']!;
_fansController = Get.put(FansController(), tag: Utils.makeHeroTag(mid));
final userInfo = GStorage.userInfo.get('userInfoCache');
mid = widget.mid ??
(Get.parameters['mid'] != null
? int.parse(Get.parameters['mid']!)
: userInfo?.mid);
isOwner = mid == userInfo?.mid;
name = Get.parameters['name'] ?? userInfo?.uname;
_fansController = Get.put(FansController(mid), tag: Utils.makeHeroTag(mid));
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
_fansController.isOwner ? '我的粉丝' : '${_fansController.name}的粉丝',
),
),
appBar: widget.onSelect != null
? null
: AppBar(title: Text(isOwner ? '我的粉丝' : '$name的粉丝')),
body: SafeArea(
bottom: false,
child: refreshIndicator(
@@ -86,22 +101,33 @@ class _FansPageState extends State<FansPage> {
String heroTag = Utils.makeHeroTag(item.mid);
return ListTile(
onTap: () {
if (widget.onSelect != null) {
widget.onSelect!(UserModel(
mid: item.mid!,
name: item.uname!,
avatar: item.face!,
));
return;
}
Get.toNamed(
'/member?mid=${item.mid}',
arguments: {'face': item.face, 'heroTag': heroTag},
);
},
onLongPress: _fansController.isOwner
? () {
showConfirmDialog(
context: context,
title: '确定移除 ${item.uname} ',
onConfirm: () {
_fansController.onRemoveFan(index, item.mid!);
},
);
}
: null,
onLongPress: widget.onSelect != null
? null
: isOwner
? () {
showConfirmDialog(
context: context,
title: '确定移除 ${item.uname} ',
onConfirm: () {
_fansController.onRemoveFan(
index, item.mid!);
},
);
}
: null,
leading: Hero(
tag: heroTag,
child: NetworkImgLayer(

View File

@@ -16,7 +16,7 @@ extension OrderTypeExt on OrderType {
class FollowChildController
extends CommonListController<FollowDataModel, FollowItemModel> {
FollowChildController(this.controller, this.mid, this.tagid);
final FollowController controller;
final FollowController? controller;
final int? tagid;
final int mid;
@@ -35,15 +35,17 @@ class FollowChildController
@override
bool customHandleResponse(bool isRefresh, Success<FollowDataModel> response) {
try {
if (controller.isOwner &&
tagid == null &&
isRefresh &&
controller.followState.value is Success) {
controller.tabs[0].count = response.response.total;
controller.tabs.refresh();
}
} catch (_) {}
if (controller != null) {
try {
if (controller!.isOwner &&
tagid == null &&
isRefresh &&
controller!.followState.value is Success) {
controller!.tabs[0].count = response.response.total;
controller!.tabs.refresh();
}
} catch (_) {}
}
return false;
}

View File

@@ -6,6 +6,7 @@ import 'package:PiliPlus/models/follow/result.dart';
import 'package:PiliPlus/pages/follow/child_controller.dart';
import 'package:PiliPlus/pages/follow/controller.dart';
import 'package:PiliPlus/pages/follow/widgets/follow_item.dart';
import 'package:PiliPlus/pages/video/detail/share/view.dart' show UserModel;
import 'package:PiliPlus/utils/utils.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -13,14 +14,16 @@ import 'package:get/get.dart';
class FollowChildPage extends StatefulWidget {
const FollowChildPage({
super.key,
required this.controller,
this.controller,
required this.mid,
this.tagid,
this.onSelect,
});
final FollowController controller;
final FollowController? controller;
final int mid;
final int? tagid;
final ValueChanged<UserModel>? onSelect;
@override
State<FollowChildPage> createState() => _FollowChildPageState();
@@ -35,7 +38,8 @@ class _FollowChildPageState extends State<FollowChildPage>
@override
Widget build(BuildContext context) {
super.build(context);
if (widget.controller.isOwner && widget.tagid == null) {
if (widget.onSelect != null ||
(widget.controller?.isOwner == true && widget.tagid == null)) {
return Scaffold(
backgroundColor: Colors.transparent,
body: _child,
@@ -90,7 +94,8 @@ class _FollowChildPageState extends State<FollowChildPage>
}
return FollowItem(
item: loadingState.response![index],
isOwner: widget.controller.isOwner,
isOwner: widget.controller?.isOwner,
onSelect: widget.onSelect,
callback: (attr) {
List<FollowItemModel> list =
(_followController.loadingState.value as Success)
@@ -113,5 +118,6 @@ class _FollowChildPageState extends State<FollowChildPage>
}
@override
bool get wantKeepAlive => widget.controller.tabController != null;
bool get wantKeepAlive =>
widget.onSelect != null || widget.controller?.tabController != null;
}

View File

@@ -1,3 +1,4 @@
import 'package:PiliPlus/pages/video/detail/share/view.dart' show UserModel;
import 'package:PiliPlus/utils/request_utils.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -10,12 +11,14 @@ class FollowItem extends StatelessWidget {
final FollowItemModel item;
final bool? isOwner;
final ValueChanged? callback;
final ValueChanged<UserModel>? onSelect;
const FollowItem({
super.key,
required this.item,
this.callback,
this.isOwner,
this.onSelect,
});
@override
@@ -23,9 +26,19 @@ class FollowItem extends StatelessWidget {
String heroTag = Utils.makeHeroTag(item.mid);
return ListTile(
onTap: () {
feedBack();
Get.toNamed('/member?mid=${item.mid}',
arguments: {'face': item.face, 'heroTag': heroTag});
if (onSelect != null) {
onSelect!.call(
UserModel(
mid: item.mid!,
name: item.uname!,
avatar: item.face!,
),
);
} else {
feedBack();
Get.toNamed('/member?mid=${item.mid}',
arguments: {'face': item.face, 'heroTag': heroTag});
}
},
leading: Stack(
clipBehavior: Clip.none,

View File

@@ -2,11 +2,11 @@ import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/http/member.dart';
import 'package:PiliPlus/models/follow/result.dart';
import 'package:PiliPlus/pages/common/common_search_controller.dart';
import 'package:get/get.dart';
class FollowSearchController
extends CommonSearchController<FollowDataModel, FollowItemModel> {
dynamic mid = Get.arguments['mid'];
FollowSearchController(this.mid);
final int mid;
@override
Future<LoadingState<FollowDataModel>> customGetData() =>

View File

@@ -8,7 +8,9 @@ import 'package:get/get.dart';
import 'controller.dart';
class FollowSearchPage extends CommonSearchPage {
const FollowSearchPage({super.key});
const FollowSearchPage({super.key, this.mid});
final int? mid;
@override
State<FollowSearchPage> createState() => _FollowSearchPageState();
@@ -17,8 +19,8 @@ class FollowSearchPage extends CommonSearchPage {
class _FollowSearchPageState extends CommonSearchPageState<FollowSearchPage,
FollowDataModel, FollowItemModel> {
@override
final FollowSearchController controller = Get.put(
FollowSearchController(),
late final FollowSearchController controller = Get.put(
FollowSearchController(widget.mid ?? Get.arguments['mid']),
tag: Utils.generateRandomString(8),
);
@@ -34,7 +36,14 @@ class _FollowSearchPageState extends CommonSearchPageState<FollowSearchPage,
if (index == list.length - 1) {
controller.onLoadMore();
}
return FollowItem(item: list[index]);
return FollowItem(
item: list[index],
onSelect: widget.mid != null
? (userModel) {
Get.back(result: userModel);
}
: null,
);
}),
),
);

View File

@@ -68,7 +68,6 @@ class SearchArticleController
useSafeArea: true,
isScrollControlled: true,
clipBehavior: Clip.hardEdge,
backgroundColor: Theme.of(context).colorScheme.surface,
constraints: BoxConstraints(
maxWidth: min(640, min(Get.width, Get.height)),
),

View File

@@ -38,7 +38,6 @@ class SearchUserController
useSafeArea: true,
isScrollControlled: true,
clipBehavior: Clip.hardEdge,
backgroundColor: Theme.of(context).colorScheme.surface,
constraints: BoxConstraints(
maxWidth: min(640, min(Get.width, Get.height)),
),

View File

@@ -146,7 +146,6 @@ class SearchVideoController
useSafeArea: true,
isScrollControlled: true,
clipBehavior: Clip.hardEdge,
backgroundColor: Theme.of(context).colorScheme.surface,
constraints: BoxConstraints(
maxWidth: min(640, min(Get.width, Get.height)),
),

View File

@@ -135,7 +135,6 @@ class _PlaySpeedPageState extends State<PlaySpeedPage> {
useSafeArea: true,
isScrollControlled: true,
clipBehavior: Clip.hardEdge,
backgroundColor: Theme.of(context).colorScheme.surface,
constraints: BoxConstraints(
maxWidth: min(640, min(Get.width, Get.height)),
),

View File

@@ -0,0 +1,70 @@
import 'package:PiliPlus/common/widgets/scroll_physics.dart';
import 'package:PiliPlus/pages/fan/index.dart';
import 'package:PiliPlus/pages/follow/child_view.dart';
import 'package:PiliPlus/pages/follow_search/view.dart';
import 'package:PiliPlus/pages/video/detail/share/view.dart' show UserModel;
import 'package:PiliPlus/utils/storage.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class ContactPage extends StatefulWidget {
const ContactPage({super.key});
@override
State<ContactPage> createState() => _ContactPageState();
}
class _ContactPageState extends State<ContactPage>
with SingleTickerProviderStateMixin {
final mid = Accounts.main.mid;
late final _controller = TabController(length: 2, vsync: this);
@override
void dispose() {
_controller.dispose();
super.dispose();
}
void onSelect(UserModel userModel) {
Get.back(result: userModel);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('通讯录'),
bottom: TabBar(
controller: _controller,
tabs: const [
Tab(text: '我的关注'),
Tab(text: '我的粉丝'),
],
),
actions: [
IconButton(
onPressed: () async {
UserModel? userModel = await Get.dialog(
FollowSearchPage(mid: mid),
useSafeArea: false,
transitionDuration: const Duration(milliseconds: 120),
);
if (userModel != null) {
Get.back(result: userModel);
}
},
icon: const Icon(Icons.search),
),
const SizedBox(width: 16),
],
),
body: tabBarView(
controller: _controller,
children: [
FollowChildPage(mid: mid, onSelect: onSelect),
FansPage(mid: mid, onSelect: onSelect),
],
),
);
}
}

View File

@@ -444,6 +444,7 @@ class VideoIntroController extends GetxController {
mainAxisSize: MainAxisSize.min,
children: [
ListTile(
dense: true,
title: const Text(
'复制链接',
style: TextStyle(fontSize: 14),
@@ -454,6 +455,7 @@ class VideoIntroController extends GetxController {
},
),
ListTile(
dense: true,
title: const Text(
'其它app打开',
style: TextStyle(fontSize: 14),
@@ -464,6 +466,7 @@ class VideoIntroController extends GetxController {
},
),
ListTile(
dense: true,
title: const Text(
'分享视频',
style: TextStyle(fontSize: 14),
@@ -476,6 +479,7 @@ class VideoIntroController extends GetxController {
},
),
ListTile(
dense: true,
title: const Text(
'分享至动态',
style: TextStyle(fontSize: 14),
@@ -496,6 +500,28 @@ class VideoIntroController extends GetxController {
);
},
),
ListTile(
dense: true,
title: const Text(
'分享至消息',
style: TextStyle(fontSize: 14),
),
onTap: () {
Get.back();
try {
PageUtils.pmShareVideo(
author: videoDetail.value.owner!.name!,
id: videoDetail.value.aid!,
source: 5,
cover: videoDetail.value.pic!,
title: videoDetail.value.title!,
bvid: videoDetail.value.bvid!,
);
} catch (e) {
SmartDialog.showToast(e.toString());
}
},
),
],
),
);

View File

@@ -0,0 +1,275 @@
import 'package:PiliPlus/common/widgets/icon_button.dart';
import 'package:PiliPlus/common/widgets/network_img_layer.dart';
import 'package:PiliPlus/common/widgets/self_sized_horizontal_list.dart';
import 'package:PiliPlus/pages/video/detail/contact/view.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:PiliPlus/utils/request_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
class UserModel {
const UserModel({
required this.mid,
required this.name,
required this.avatar,
});
final int mid;
final String name;
final String avatar;
@override
bool operator ==(Object other) {
if (identical(this, other)) {
return true;
}
if (other is UserModel) {
return mid == other.mid;
}
return false;
}
@override
int get hashCode => mid.hashCode;
}
class ShareVideoPanel extends StatefulWidget {
const ShareVideoPanel({
super.key,
this.author,
required this.id,
required this.source,
required this.cover,
required this.title,
this.bvid,
this.url,
this.authorId,
this.sourceDesc,
this.userList,
});
final String? author;
final int id;
final int source;
final String cover;
final String title;
final String? bvid;
final String? url;
final int? authorId;
final String? sourceDesc;
final List<UserModel>? userList;
@override
State<ShareVideoPanel> createState() => _ShareVideoPanelState();
}
class _ShareVideoPanelState extends State<ShareVideoPanel> {
int _selectedIndex = -1;
final List<UserModel> _userList = <UserModel>[];
final ScrollController _scrollController = ScrollController();
final FocusNode _focusNode = FocusNode();
final TextEditingController _controller = TextEditingController();
@override
void dispose() {
_focusNode.dispose();
_controller.dispose();
_scrollController.dispose();
super.dispose();
}
@override
void initState() {
super.initState();
if (widget.userList?.isNotEmpty == true) {
_userList.addAll(widget.userList!);
}
}
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(12) +
MediaQuery.paddingOf(context) +
MediaQuery.of(context).viewInsets,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('分享给'),
iconButton(
size: 32,
iconSize: 18,
tooltip: '关闭',
context: context,
icon: Icons.clear,
onPressed: Get.back,
),
],
),
const SizedBox(height: 5),
Row(
children: [
Expanded(
child: SelfSizedHorizontalList(
gapSize: 10,
itemCount: _userList.length,
controller: _scrollController,
childBuilder: (index) {
return GestureDetector(
onTap: () {
_selectedIndex = index;
setState(() {});
},
behavior: HitTestBehavior.opaque,
child: SizedBox(
width: 65,
child: Column(
children: [
Container(
decoration: index == _selectedIndex
? BoxDecoration(
shape: BoxShape.circle,
border: Border.all(
width: 1.5,
color: Theme.of(context)
.colorScheme
.primary,
),
)
: null,
width: 50,
height: 50,
alignment: Alignment.center,
child: NetworkImgLayer(
width: 40,
height: 40,
src: _userList[index].avatar,
type: 'avatar',
),
),
const SizedBox(height: 2),
Text(
_userList[index].name,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(fontSize: 12),
),
],
),
),
);
},
),
),
GestureDetector(
onTap: () async {
_focusNode.unfocus();
UserModel? userModel = await Get.dialog(
const ContactPage(),
useSafeArea: false,
transitionDuration: const Duration(milliseconds: 120),
);
if (userModel != null) {
_userList.remove(userModel);
_userList.insert(0, userModel);
_selectedIndex = 0;
_scrollController.jumpToTop();
setState(() {});
}
},
behavior: HitTestBehavior.opaque,
child: SizedBox(
width: 65,
child: Column(
children: [
Container(
width: 50,
height: 50,
alignment: Alignment.center,
child: Container(
width: 40,
height: 40,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Theme.of(context)
.colorScheme
.secondaryContainer,
),
child: Icon(
Icons.person_add_alt,
color: Theme.of(context)
.colorScheme
.onSecondaryContainer,
),
),
),
const SizedBox(height: 2),
const Text('更多', style: TextStyle(fontSize: 12)),
],
),
),
),
],
),
const SizedBox(height: 12),
Row(
children: [
Expanded(
child: TextField(
controller: _controller,
focusNode: _focusNode,
decoration: InputDecoration(
hintText: '说说你的想法吧...',
hintStyle: const TextStyle(fontSize: 14),
border: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(25),
),
filled: true,
isDense: true,
contentPadding:
const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
fillColor: Theme.of(context).colorScheme.onInverseSurface,
),
),
),
const SizedBox(width: 12),
FilledButton.tonal(
onPressed: () {
if (_selectedIndex == -1) {
SmartDialog.showToast('请选择分享的用户');
return;
}
RequestUtils.pmShareVideo(
receiverId: _userList[_selectedIndex].mid,
author: widget.author,
id: widget.id,
source: widget.source,
cover: widget.cover,
title: widget.title,
bvid: widget.bvid,
url: widget.url,
authorId: widget.authorId,
sourceDesc: widget.sourceDesc,
message: _controller.text,
);
},
style: FilledButton.styleFrom(
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
visualDensity:
const VisualDensity(horizontal: -2, vertical: -1),
),
child: const Text('发送'),
),
],
),
],
),
);
}
}

View File

@@ -2288,7 +2288,6 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
void onShowMemberPage(mid) {
videoDetailController.childKey.currentState?.showBottomSheet(
shape: const RoundedRectangleBorder(),
backgroundColor: themeData.colorScheme.surface,
(context) {
return HorizontalMemberPage(
mid: mid,

View File

@@ -71,7 +71,7 @@ class WhisperDetailController
Future sendMsg({
required String message,
dynamic picMsg,
Map? picMsg,
required VoidCallback onClearText,
int? msgType,
int? index,
@@ -95,8 +95,11 @@ class WhisperDetailController
var result = await MsgHttp.sendMsg(
senderUid: ownerMid,
receiverId: int.parse(mid!),
content:
msgType == 5 ? message : jsonEncode(picMsg ?? {"content": message}),
content: msgType == 5
? message
: jsonEncode(
picMsg ?? {"content": message},
),
msgType: msgType ?? (picMsg != null ? 2 : 1),
);
SmartDialog.dismiss();

View File

@@ -273,7 +273,7 @@ class _WhisperDetailPageState
);
if (pickedFile != null) {
SmartDialog.showLoading(msg: '正在上传图片');
dynamic result = await MsgHttp.uploadBfs(
final result = await MsgHttp.uploadBfs(
path: pickedFile.path,
biz: 'im',
);
@@ -281,8 +281,8 @@ class _WhisperDetailPageState
String mimeType = lookupMimeType(pickedFile.path)
?.split('/')
.getOrNull(1) ??
'png';
dynamic picMsg = {
'jpg';
Map picMsg = {
'url': result['data']['image_url'],
'height': result['data']['image_height'],
'width': result['data']['image_width'],

View File

@@ -181,27 +181,38 @@ class ChatItem extends StatelessWidget {
children: [
GestureDetector(
onTap: () async {
dynamic aid = content['id'];
if (aid is String) {
aid = int.tryParse(aid);
}
dynamic bvid = content["bvid"];
if (aid == null && bvid == null) {
SmartDialog.showToast('null');
if (content['source'] == 16) {
PageUtils.viewBangumi(epId: content['id']);
return;
}
bvid ??= IdUtils.av2bv(aid);
SmartDialog.showLoading();
final int cid = await SearchHttp.ab2c(bvid: bvid);
SmartDialog.dismiss<dynamic>().then(
(e) => PageUtils.toVideoPage(
'bvid=$bvid&cid=$cid',
arguments: <String, String?>{
'pic': content['thumb'],
'heroTag': Utils.makeHeroTag(bvid),
},
),
);
if (content['source'] == 5) {
dynamic aid = content['id'];
if (aid is String) {
aid = int.tryParse(aid);
}
dynamic bvid = content["bvid"];
if (aid == null && bvid == null) {
SmartDialog.showToast('null');
return;
}
bvid ??= IdUtils.av2bv(aid);
SmartDialog.showLoading();
final int cid = await SearchHttp.ab2c(bvid: bvid);
SmartDialog.dismiss<dynamic>().then(
(e) => PageUtils.toVideoPage(
'bvid=$bvid&cid=$cid',
arguments: <String, String?>{
'pic': content['thumb'],
'heroTag': Utils.makeHeroTag(bvid),
},
),
);
return;
}
SmartDialog.showToast(
'unsupported source type: ${content['source']}');
},
child: NetworkImgLayer(
width: 220,

View File

@@ -1,14 +1,17 @@
import 'dart:math';
import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart';
import 'package:PiliPlus/grpc/grpc_repo.dart';
import 'package:PiliPlus/http/dynamics.dart';
import 'package:PiliPlus/http/search.dart';
import 'package:PiliPlus/models/bangumi/info.dart';
import 'package:PiliPlus/models/common/search_type.dart';
import 'package:PiliPlus/models/dynamics/result.dart';
import 'package:PiliPlus/models/live/item.dart';
import 'package:PiliPlus/pages/video/detail/contact/view.dart';
import 'package:PiliPlus/pages/video/detail/introduction/widgets/fav_panel.dart';
import 'package:PiliPlus/pages/video/detail/introduction/widgets/menu_row.dart';
import 'package:PiliPlus/pages/video/detail/share/view.dart';
import 'package:PiliPlus/services/shutdown_timer_service.dart';
import 'package:PiliPlus/utils/app_scheme.dart';
import 'package:PiliPlus/utils/extension.dart';
@@ -25,6 +28,60 @@ import 'package:get/get.dart';
import 'package:url_launcher/url_launcher.dart';
class PageUtils {
static void pmShareVideo({
String? author,
required int id,
required int source,
required String cover,
required String title,
String? bvid,
String? url,
int? authorId,
String? sourceDesc,
}) async {
List<UserModel> userList = <UserModel>[];
final shareListRes = await GrpcRepo.shareList(size: 3);
if (shareListRes['status'] && shareListRes['data'].sessionList.isNotEmpty) {
userList.addAll(shareListRes['data']
.sessionList
.map<UserModel>((item) => UserModel(
mid: item.talkerId.toInt(),
name: item.talkerUname,
avatar: item.talkerIcon,
))
.toList());
} else {
UserModel? userModel = await Get.dialog(
const ContactPage(),
useSafeArea: false,
transitionDuration: const Duration(milliseconds: 120),
);
if (userModel != null) {
userList.add(userModel);
}
}
showModalBottomSheet(
context: Get.context!,
builder: (context) => ShareVideoPanel(
author: author,
id: id,
source: source,
cover: cover,
title: title,
bvid: bvid,
url: url,
authorId: authorId,
sourceDesc: sourceDesc,
userList: userList,
),
useSafeArea: true,
enableDrag: false,
isScrollControlled: true,
);
}
static void scheduleExit(BuildContext context, isFullScreen,
[bool isLive = false]) {
if (!context.mounted) {
@@ -255,7 +312,6 @@ class PageUtils {
context: context,
useSafeArea: true,
isScrollControlled: true,
backgroundColor: Theme.of(context).colorScheme.surface,
sheetAnimationStyle: AnimationStyle(curve: Curves.ease),
constraints: BoxConstraints(
maxWidth: min(640, min(Get.width, Get.height)),

View File

@@ -1,10 +1,14 @@
import 'dart:convert';
import 'dart:math';
import 'package:PiliPlus/common/widgets/radio_widget.dart';
import 'package:PiliPlus/grpc/app/main/community/reply/v1/reply.pb.dart';
import 'package:PiliPlus/grpc/grpc_repo.dart';
import 'package:PiliPlus/grpc/im/type/im.pbenum.dart';
import 'package:PiliPlus/http/dynamics.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/http/member.dart';
import 'package:PiliPlus/http/msg.dart';
import 'package:PiliPlus/http/user.dart';
import 'package:PiliPlus/http/video.dart';
import 'package:PiliPlus/models/dynamics/result.dart';
@@ -21,6 +25,82 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
class RequestUtils {
// 1小视频已弃用
// 2相簿
// 3纯文字
// 4直播此类型不常用见分享其他内容消息
// 5视频
// 6专栏
// 7番剧id 为 season_id
// 8音乐
// 9国产动画id 为 AV 号)
// 10图片
// 11动态
// 16番剧id 为 epid
// 17番剧
// https://github.com/SocialSisterYi/bilibili-API-collect/tree/master/docs/message/private_msg_content.md
static Future pmShareVideo({
required int receiverId,
String? author,
required int id,
required int source,
required String cover,
required String title,
String? bvid,
String? url,
int? authorId,
String? sourceDesc,
String? message,
ValueChanged<bool>? callback,
}) async {
SmartDialog.showLoading();
final ownerMid = Accounts.main.mid;
final videoRes = await GrpcRepo.sendMsg(
senderUid: ownerMid,
receiverId: receiverId,
content: jsonEncode(
{
if (author != null) "author": author,
"headline": title,
"id": id,
"source": source,
"thumb": cover,
"title": title,
if (bvid != null) "bvid": bvid,
// pgc
if (url != null) "url": url,
if (authorId != null) "author_id": authorId,
if (sourceDesc != null) "source_desc": sourceDesc,
},
),
msgType: MsgType.EN_MSG_TYPE_SHARE_V2,
);
if (videoRes['status']) {
if (message?.isNotEmpty == true) {
var textRes = await MsgHttp.sendMsg(
senderUid: ownerMid,
receiverId: receiverId,
content: jsonEncode({"content": message}),
msgType: 1,
);
Get.back();
if (textRes['status']) {
SmartDialog.showToast('分享成功');
} else {
SmartDialog.showToast('视频分享成功,但消息分享失败: ${textRes['msg']}');
}
} else {
Get.back();
SmartDialog.showToast('分享成功');
}
} else {
SmartDialog.showToast('分享失败: ${videoRes['msg']}');
}
SmartDialog.dismiss();
}
static Future actionRelationMod({
required BuildContext context,
required dynamic mid,
@@ -92,7 +172,6 @@ class RequestUtils {
context: context,
useSafeArea: true,
isScrollControlled: true,
backgroundColor: Theme.of(context).colorScheme.surface,
sheetAnimationStyle: AnimationStyle(curve: Curves.ease),
constraints: BoxConstraints(
maxWidth: min(640, min(Get.width, Get.height)),

View File

@@ -91,6 +91,15 @@ class ThemeUtils {
fontWeight: fontWeight,
),
),
bottomSheetTheme: BottomSheetThemeData(
backgroundColor: colorScheme.surface,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(18),
topRight: Radius.circular(18),
),
),
),
);
if (isDark && GStorage.isPureBlackTheme) {
themeData = darkenTheme(themeData);

View File

@@ -1452,10 +1452,10 @@ packages:
dependency: "direct main"
description:
name: protobuf
sha256: "68645b24e0716782e58948f8467fd42a880f255096a821f9e7d0ec625b00c84d"
sha256: fbb0c37d435641d0b84813c1dad41e6fa61ddc880a320bce16b3063ecec35aa6
url: "https://pub.dev"
source: hosted
version: "3.1.0"
version: "4.0.0"
pub_semver:
dependency: transitive
description:

View File

@@ -122,7 +122,7 @@ dependencies:
git:
url: https://github.com/orz12/auto_orientation.git
ref: master
protobuf: ^3.1.0
protobuf: ^4.0.0
animations: ^2.0.11
# 获取appx信息