35 if (request->type().name() ==
"guild")
58 club::v1::client::SubscribeNotification subscribeNotification;
70 subscribeNotification.set_club_id(guild->
GetId());
73 club::v1::client::Club* guildClub = subscribeNotification.mutable_club();
75 guildClub->set_id(guild->
GetId());
77 guildClub->set_name(guild->
GetName());
80 guildClub->set_privacy_level(club::v1::PrivacyLevel::PRIVACY_LEVEL_OPEN);
81 guildClub->set_visibility_level(club::v1::VISIBILITY_LEVEL_PRIVATE);
86 club::v1::client::MemberDescription* guildLeaderDescription = guildClub->add_leader();
88 guildLeaderDescription->mutable_id()->set_account_id(guildLeader->
GetAccountId());
89 guildLeaderDescription->mutable_id()->set_unique_id(guildLeader->
GetGUID().
GetCounter());
91 club::v1::client::Member* subscriber = subscribeNotification.mutable_member();
106 subscriber->set_presence_level(club::v1::client::PRESENCE_LEVEL_RICH);
107 subscriber->set_whisper_level(club::v1::client::WHISPER_LEVEL_OPEN);
110 subscriber->set_active(
true);
112 WorldserverService<club::v1::client::ClubListener>(
_session).OnSubscribe(&subscribeNotification,
true,
true);
115 club::v1::client::SubscriberStateChangedNotification subscriberStateChangedNotification;
117 subscriberStateChangedNotification.set_club_id(guild->
GetId());
119 club::v1::client::SubscriberStateAssignment* assignment = subscriberStateChangedNotification.add_assignment();
124 assignment->set_active(
true);
126 WorldserverService<club::v1::client::ClubListener>(
_session).OnSubscriberStateChanged(&subscriberStateChangedNotification,
true,
true);
146 for (
auto const& [guid, member] : guild->GetMembers())
148 club::v1::client::Member* clubMember = response->add_member();
161 clubMember->set_presence_level(club::v1::client::PresenceLevel::PRESENCE_LEVEL_RICH);
162 clubMember->set_whisper_level(club::v1::client::WhisperLevel::WHISPER_LEVEL_OPEN);
163 std::string_view publicNote = member.GetPublicNote();
164 clubMember->set_note(publicNote.data(), publicNote.size());
165 clubMember->set_active(member.IsOnline());
185 club::v1::client::Stream* generalGuildChannelStream = response->add_stream();
187 generalGuildChannelStream->set_club_id(guild->
GetId());
190 v2::Attribute* generalStreamAttribute = generalGuildChannelStream->add_attribute();
192 generalStreamAttribute->set_name(
"global_strings_tag");
193 generalStreamAttribute->mutable_value()->set_string_value(
"COMMUNITIES_GUILD_GENERAL_CHANNEL_NAME");
195 generalGuildChannelStream->set_name(
"Guild");
206 generalGuildChannelStream->set_voice_level(club::v1::client::StreamVoiceLevel::VOICE_LEVEL_DISABLED);
209 club::v1::client::Stream* officerGuildChannelStream = response->add_stream();
211 officerGuildChannelStream->set_club_id(guild->
GetId());
214 v2::Attribute* officerStreamAttribute = officerGuildChannelStream->add_attribute();
216 officerStreamAttribute->set_name(
"global_strings_tag");
217 officerStreamAttribute->mutable_value()->set_string_value(
"COMMUNITIES_GUILD_OFFICER_CHANNEL_NAME");
219 officerGuildChannelStream->set_name(
"Officer");
229 officerGuildChannelStream->set_voice_level(club::v1::client::StreamVoiceLevel::VOICE_LEVEL_DISABLED);
232 club::v1::client::StreamView* generalView = response->add_view();
234 generalView->set_club_id(guild->
GetId());
237 club::v1::client::StreamView* officerView = response->add_view();
239 officerView->set_club_id(guild->
GetId());
306 std::function<
void(
ServiceBase*,
uint32, google::protobuf::Message
const*)>& continuation)
343 std::chrono::microseconds messageTime = std::chrono::duration_cast<std::chrono::microseconds>(
GameTime::GetSystemTime().time_since_epoch());
347 club::v1::client::StreamMessageAddedNotification messageAddedNotification;
349 messageAddedNotification.set_club_id(guild->
GetId());
350 messageAddedNotification.set_stream_id(request->stream_id());
351 FillStreamMessage(messageAddedNotification.mutable_message(), request->options().content(), messageTime, player->
GetGUID());
362 WorldserverService<club::v1::client::ClubListener>(receiver->
GetSession()).OnStreamMessageAdded(&messageAddedNotification,
true,
true);
369 continuation =
nullptr;
376 std::unique_ptr<club::v1::UniqueClubType> type = std::make_unique<club::v1::UniqueClubType>();
377 type->set_program(5730135);
378 type->set_name(
"guild");
384 message->mutable_id()->set_epoch(messageTime.count());
385 message->mutable_id()->set_position(0);
392 contentChain->set_edit_time(messageTime.count());
@ ERROR_CLUB_NO_SUCH_MEMBER
@ ERROR_CLUB_STREAM_NO_SUCH_MESSAGE
@ ERROR_CLUB_STREAM_NO_STREAM
constexpr std::underlying_type< E >::type AsUnderlyingType(E enumValue)
ObjectGuid const & GetGUID() const
static std::unique_ptr< club::v1::MemberId > CreateClubMemberId(ObjectGuid guid)
uint32 HandleSubscribeStream(club::v1::client::SubscribeStreamRequest const *request, NoData *response, std::function< void(ServiceBase *, uint32, ::google::protobuf::Message const *)> &continuation) override
uint32 HandleGetClubType(club::v1::client::GetClubTypeRequest const *request, club::v1::client::GetClubTypeResponse *response, std::function< void(ServiceBase *, uint32, ::google::protobuf::Message const *)> &continuation) override
uint32 HandleUnsubscribeStream(club::v1::client::UnsubscribeStreamRequest const *request, NoData *response, std::function< void(ServiceBase *, uint32, ::google::protobuf::Message const *)> &continuation) override
uint32 HandleSubscribe(club::v1::client::SubscribeRequest const *request, NoData *response, std::function< void(ServiceBase *, uint32, ::google::protobuf::Message const *)> &continuation) override
ClubService(WorldSession *session)
uint32 HandleGetStreams(club::v1::client::GetStreamsRequest const *request, club::v1::client::GetStreamsResponse *response, std::function< void(ServiceBase *, uint32, ::google::protobuf::Message const *)> &continuation) override
uint32 HandleAdvanceStreamViewTime(club::v1::client::AdvanceStreamViewTimeRequest const *request, NoData *response, std::function< void(ServiceBase *, uint32, ::google::protobuf::Message const *)> &continuation) override
uint32 HandleCreateMessage(club::v1::client::CreateMessageRequest const *request, club::v1::client::CreateMessageResponse *response, std::function< void(ServiceBase *, uint32, ::google::protobuf::Message const *)> &continuation) override
static void FillStreamMessage(club::v1::client::StreamMessage *message, std::string_view msg, std::chrono::microseconds messageTime, ObjectGuid author)
uint32 HandleGetMembers(club::v1::client::GetMembersRequest const *request, club::v1::client::GetMembersResponse *response, std::function< void(ServiceBase *, uint32, ::google::protobuf::Message const *)> &continuation) override
static std::unique_ptr< club::v1::UniqueClubType > CreateGuildClubType()
uint32 HandleSetStreamFocus(club::v1::client::SetStreamFocusRequest const *request, NoData *response, std::function< void(ServiceBase *, uint32, ::google::protobuf::Message const *)> &continuation) override
GuildRankId GetRankId() const
uint32 GetAccountId() const
bool IsRank(GuildRankId rankId) const
ObjectGuid const & GetGUID() const
ObjectGuid GetLeaderGUID() const
ObjectGuid::LowType GetId() const
std::string const & GetName() const
void BroadcastWorker(Do &&_do, Player const *except=nullptr) const
bool HasAnyRankRight(GuildRankId rankId, GuildRankRights rights) const
Member const * GetMember(ObjectGuid const &guid) const
uint32 GetMembersCount() const
LowType GetCounter() const
bool HasIgnore(ObjectGuid const &ignoreGuid, ObjectGuid const &ignoreAccountGuid)
PlayerSocial * GetSocial() const
WorldSession * GetSession() const
Player session in the World.
ObjectGuid GetAccountGUID() const
Player * GetPlayer() const
ChatMessageResult HandleChatMessage(ChatMsg type, Language lang, std::string msg, std::string target="", Optional< ObjectGuid > targetGuid={})
void set_content(const ::std::string &value)
SystemTimePoint GetSystemTime()
Current chrono system_clock time point.