Changeset View
Changeset View
Standalone View
Standalone View
src/client/actions/membership.cpp
| /* | /* | ||||
| * This file is part of libkazv. | * This file is part of libkazv. | ||||
| * SPDX-FileCopyrightText: 2020 Tusooa Zhu <tusooa@kazv.moe> | * SPDX-FileCopyrightText: 2020-2026 tusooa <tusooa@kazv.moe> | ||||
| * SPDX-License-Identifier: AGPL-3.0-or-later | * SPDX-License-Identifier: AGPL-3.0-or-later | ||||
| */ | */ | ||||
| #include <libkazv-config.hpp> | #include <libkazv-config.hpp> | ||||
| #include <csapi/create_room.hpp> | #include <csapi/create_room.hpp> | ||||
| #include <csapi/inviting.hpp> | #include <csapi/inviting.hpp> | ||||
| #include <csapi/joining.hpp> | #include <csapi/joining.hpp> | ||||
| ▲ Show 20 Lines • Show All 72 Lines • ▼ Show 20 Lines | ClientResult updateClient(ClientModel m, CreateRoomAction a) | ||||
| return { std::move(m), lager::noop }; | return { std::move(m), lager::noop }; | ||||
| } | } | ||||
| ClientResult processResponse(ClientModel m, CreateRoomResponse r) | ClientResult processResponse(ClientModel m, CreateRoomResponse r) | ||||
| { | { | ||||
| if (! r.success()) { | if (! r.success()) { | ||||
| kzo.client.dbg() << "Create room failed" << std::endl; | kzo.client.dbg() << "Create room failed" << std::endl; | ||||
| m.addTrigger(CreateRoomFailed{r.errorCode(), r.errorMessage()}); | |||||
| return { std::move(m), failWithResponse(r) }; | return { std::move(m), failWithResponse(r) }; | ||||
| } | } | ||||
| m.addTrigger(CreateRoomSuccessful{r.roomId()}); | |||||
| return { std::move(m), [=](auto &&) { | return { std::move(m), [=](auto &&) { | ||||
| return EffectStatus(/* succ = */ true, json{ | return EffectStatus(/* succ = */ true, json{ | ||||
| {"roomId", r.roomId()}, | {"roomId", r.roomId()}, | ||||
| }); | }); | ||||
| }}; | }}; | ||||
| } | } | ||||
| ClientResult updateClient(ClientModel m, InviteToRoomAction a) | ClientResult updateClient(ClientModel m, InviteToRoomAction a) | ||||
| Show All 13 Lines | namespace Kazv | ||||
| { | { | ||||
| auto roomId = r.dataStr("roomId"); | auto roomId = r.dataStr("roomId"); | ||||
| auto userId = r.dataStr("userId"); | auto userId = r.dataStr("userId"); | ||||
| if (! r.success()) { | if (! r.success()) { | ||||
| // Error | // Error | ||||
| kzo.client.warn() << "Error inviting user " << r.errorCode() << r.errorMessage() << std::endl; | kzo.client.warn() << "Error inviting user " << r.errorCode() << r.errorMessage() << std::endl; | ||||
| m.addTrigger(InviteUserFailed{roomId, userId, r.errorCode(), r.errorMessage()}); | |||||
| return { std::move(m), failWithResponse(r) }; | return { std::move(m), failWithResponse(r) }; | ||||
| } | } | ||||
| kzo.client.info() << "Inviting user successful" << std::endl; | kzo.client.info() << "Inviting user successful" << std::endl; | ||||
| m.addTrigger(InviteUserSuccessful{roomId, userId}); | |||||
| return { std::move(m), lager::noop }; | return { std::move(m), lager::noop }; | ||||
| } | } | ||||
| ClientResult updateClient(ClientModel m, JoinRoomAction a) | ClientResult updateClient(ClientModel m, JoinRoomAction a) | ||||
| { | { | ||||
| /// HACK: wait for real boost::url | /// HACK: wait for real boost::url | ||||
| auto encodedId = a.roomIdOrAlias; | auto encodedId = a.roomIdOrAlias; | ||||
| if (!encodedId.empty() && encodedId[0] == '#') { | if (!encodedId.empty() && encodedId[0] == '#') { | ||||
| encodedId.replace(0, 1, "%23"); | encodedId.replace(0, 1, "%23"); | ||||
| } | } | ||||
| auto job = m.job<JoinRoomJob>() | auto job = m.job<JoinRoomJob>() | ||||
| .make(encodedId, a.serverName) | .make(encodedId, a.serverName) | ||||
| .withData(json{{"roomIdOrAlias", a.roomIdOrAlias}}); | .withData(json{{"roomIdOrAlias", a.roomIdOrAlias}}); | ||||
| m.addJob(std::move(job)); | m.addJob(std::move(job)); | ||||
| return { m, lager::noop }; | return { m, lager::noop }; | ||||
| } | } | ||||
| ClientResult processResponse(ClientModel m, JoinRoomResponse r) | ClientResult processResponse(ClientModel m, JoinRoomResponse r) | ||||
| { | { | ||||
| auto roomIdOrAlias = r.dataStr("roomIdOrAlias"); | auto roomIdOrAlias = r.dataStr("roomIdOrAlias"); | ||||
| if (! r.success()) { | if (! r.success()) { | ||||
| m.addTrigger(JoinRoomFailed{ | |||||
| roomIdOrAlias, | |||||
| r.errorCode(), | |||||
| r.errorMessage() | |||||
| }); | |||||
| kzo.client.warn() << "Error joining room" << r.errorCode() << r.errorMessage() << std::endl; | kzo.client.warn() << "Error joining room" << r.errorCode() << r.errorMessage() << std::endl; | ||||
| return { std::move(m), failWithResponse(r) }; | return { std::move(m), failWithResponse(r) }; | ||||
| } | } | ||||
| kzo.client.info() << "Successfully joined room" << std::endl; | kzo.client.info() << "Successfully joined room" << std::endl; | ||||
| m.addTrigger(JoinRoomSuccessful{roomIdOrAlias}); | |||||
| return { std::move(m), lager::noop}; | return { std::move(m), lager::noop}; | ||||
| } | } | ||||
| ClientResult updateClient(ClientModel m, JoinRoomByIdAction a) | ClientResult updateClient(ClientModel m, JoinRoomByIdAction a) | ||||
| { | { | ||||
| auto job = m.job<JoinRoomByIdJob>() | auto job = m.job<JoinRoomByIdJob>() | ||||
| .make(a.roomId) | .make(a.roomId) | ||||
| .withData(json{{"roomIdOrAlias", a.roomId}}); | .withData(json{{"roomIdOrAlias", a.roomId}}); | ||||
| m.addJob(std::move(job)); | m.addJob(std::move(job)); | ||||
| return { std::move(m), lager::noop }; | return { std::move(m), lager::noop }; | ||||
| } | } | ||||
| ClientResult processResponse(ClientModel m, JoinRoomByIdResponse r) | ClientResult processResponse(ClientModel m, JoinRoomByIdResponse r) | ||||
| { | { | ||||
| auto roomIdOrAlias = r.dataStr("roomIdOrAlias"); | auto roomIdOrAlias = r.dataStr("roomIdOrAlias"); | ||||
| if (! r.success()) { | if (! r.success()) { | ||||
| m.addTrigger(JoinRoomFailed{ | |||||
| roomIdOrAlias, | |||||
| r.errorCode(), | |||||
| r.errorMessage() | |||||
| }); | |||||
| kzo.client.warn() << "Error joining room" << r.errorCode() << r.errorMessage() << std::endl; | kzo.client.warn() << "Error joining room" << r.errorCode() << r.errorMessage() << std::endl; | ||||
| return { std::move(m), failWithResponse(r) }; | return { std::move(m), failWithResponse(r) }; | ||||
| } | } | ||||
| kzo.client.info() << "Successfully joined room" << std::endl; | kzo.client.info() << "Successfully joined room" << std::endl; | ||||
| m.addTrigger(JoinRoomSuccessful{roomIdOrAlias}); | |||||
| return { std::move(m), lager::noop}; | return { std::move(m), lager::noop}; | ||||
| } | } | ||||
| ClientResult updateClient(ClientModel m, LeaveRoomAction a) | ClientResult updateClient(ClientModel m, LeaveRoomAction a) | ||||
| { | { | ||||
| auto job = m.job<LeaveRoomJob>() | auto job = m.job<LeaveRoomJob>() | ||||
| .make(a.roomId) | .make(a.roomId) | ||||
| .withData(json{{"roomId", a.roomId}}); | .withData(json{{"roomId", a.roomId}}); | ||||
| m.addJob(std::move(job)); | m.addJob(std::move(job)); | ||||
| return { std::move(m), lager::noop }; | return { std::move(m), lager::noop }; | ||||
| } | } | ||||
| ClientResult processResponse(ClientModel m, LeaveRoomResponse r) | ClientResult processResponse(ClientModel m, LeaveRoomResponse r) | ||||
| { | { | ||||
| auto roomId = r.dataStr("roomId"); | auto roomId = r.dataStr("roomId"); | ||||
| if (! r.success()) { | if (! r.success()) { | ||||
| m.addTrigger(LeaveRoomFailed{ | |||||
| roomId, | |||||
| r.errorCode(), | |||||
| r.errorMessage() | |||||
| }); | |||||
| kzo.client.warn() << "Error leaving room" << r.errorCode() << r.errorMessage() << std::endl; | kzo.client.warn() << "Error leaving room" << r.errorCode() << r.errorMessage() << std::endl; | ||||
| return { std::move(m), failWithResponse(r) }; | return { std::move(m), failWithResponse(r) }; | ||||
| } | } | ||||
| kzo.client.info() << "Successfully left room" << std::endl; | kzo.client.info() << "Successfully left room" << std::endl; | ||||
| m.addTrigger(LeaveRoomSuccessful{roomId}); | |||||
| return { std::move(m), lager::noop}; | return { std::move(m), lager::noop}; | ||||
| } | } | ||||
| ClientResult updateClient(ClientModel m, ForgetRoomAction a) | ClientResult updateClient(ClientModel m, ForgetRoomAction a) | ||||
| { | { | ||||
| auto job = m.job<ForgetRoomJob>() | auto job = m.job<ForgetRoomJob>() | ||||
| .make(a.roomId) | .make(a.roomId) | ||||
| .withData(json{{"roomId", a.roomId}}); | .withData(json{{"roomId", a.roomId}}); | ||||
| m.addJob(std::move(job)); | m.addJob(std::move(job)); | ||||
| return { std::move(m), lager::noop }; | return { std::move(m), lager::noop }; | ||||
| } | } | ||||
| ClientResult processResponse(ClientModel m, ForgetRoomResponse r) | ClientResult processResponse(ClientModel m, ForgetRoomResponse r) | ||||
| { | { | ||||
| auto roomId = r.dataStr("roomId"); | auto roomId = r.dataStr("roomId"); | ||||
| if (! r.success()) { | if (! r.success()) { | ||||
| m.addTrigger(ForgetRoomFailed{ | |||||
| roomId, | |||||
| r.errorCode(), | |||||
| r.errorMessage() | |||||
| }); | |||||
| kzo.client.warn() << "Error forgetting room" << r.errorCode() << r.errorMessage() << std::endl; | kzo.client.warn() << "Error forgetting room" << r.errorCode() << r.errorMessage() << std::endl; | ||||
| return { std::move(m), failWithResponse(r) }; | return { std::move(m), failWithResponse(r) }; | ||||
| } | } | ||||
| kzo.client.info() << "Successfully forgot room" << std::endl; | kzo.client.info() << "Successfully forgot room" << std::endl; | ||||
| m.addTrigger(ForgetRoomSuccessful{roomId}); | |||||
| return { std::move(m), lager::noop}; | return { std::move(m), lager::noop}; | ||||
| } | } | ||||
| ClientResult updateClient(ClientModel m, KickAction a) | ClientResult updateClient(ClientModel m, KickAction a) | ||||
| { | { | ||||
| m.addJob(m.job<KickJob>().make(a.roomId, a.userId, a.reason)); | m.addJob(m.job<KickJob>().make(a.roomId, a.userId, a.reason)); | ||||
| return { std::move(m), lager::noop }; | return { std::move(m), lager::noop }; | ||||
| } | } | ||||
| Show All 39 Lines | |||||