Added message historyp

This commit is contained in:
Torsten Schulz
2024-02-08 17:34:20 +01:00
parent cc5e4f38a8
commit cf73c5b13a
4 changed files with 61 additions and 1 deletions

View File

@@ -359,7 +359,6 @@ void App::setupConversationUI(Wt::Json::Object userData) {
Wt::WContainerWidget* App::createInfoWidget(Wt::WVBoxLayout *layout, Wt::Json::Object userData) {
auto infoWidget = layout->addNew<Wt::WContainerWidget>();
auto infoLayout = infoWidget->setLayout(std::make_unique<Wt::WHBoxLayout>());
infoWidget->setStyleClass("user-conversation-info");
infoWidget->setStyleClass(Wt::WString("user-conversation-info userlist-gender-{1}").arg((std::string)userData["gender"]));
infoLayout->addWidget(createInfoText(userData), 1);
auto blockButton = createBlockButton(userData);
@@ -757,6 +756,7 @@ void App::createMenu() {
addIdentifier();
addSearchButton();
addInboxButton();
addHistoryButton();
}
void App::addLeaveButton() {
@@ -773,6 +773,11 @@ void App::logout() {
searchFields.outputContainer = nullptr;
}
void App::addHistoryButton() {
auto history = menuContainer_->addNew<Wt::WPushButton>("History");
history->clicked().connect(this, &App::requestHistory);
}
void App::addIdentifier() {
auto identifier = menuContainer_->addNew<Wt::WText>(Wt::WString("{1} ({2}), {3}").arg(userName).arg(isoCountryCode).arg(age));
identifier->setMargin(Wt::WLength(0.3, Wt::LengthUnit::FontEm), Wt::Side::Bottom | Wt::Side::Top);
@@ -930,6 +935,32 @@ void App::removeUserFromSearch(Wt::Json::Object) {
startSearch();
}
void App::requestHistory() {
server_.sendHistory(sessionId());
}
void App::showHistory(Wt::Json::Object broadcast) {
try {
contentContainer_->clear();
auto headerWidget = contentContainer_->addNew<Wt::WText>("<h2>Conversations with already logged in users</h2>");
headerWidget->setInline(false);
auto listWidget = contentContainer_->addNew<Wt::WTable>();
for (Wt::Json::Object user: (Wt::Json::Array)broadcast["data"]) {
auto userName = std::make_shared<std::string>((std::string)user["name"]);
auto tableCell = listWidget->elementAt(listWidget->rowCount(), 0);
tableCell->addNew<Wt::WText>(Wt::WString("{1} ({2})").arg(*userName).arg((int)user["age"]));
tableCell->setStyleClass(Wt::WString("user-conversation-info userlist-item userlist-gender-{1}").arg((std::string)user["gender"]));
tableCell->clicked().connect([=, this]() {
requestConversation(*userName);
});
}
} catch(std::exception &e) {
std::cout << e.what() << std::endl;
}
triggerUpdate();
}
void App::itemChanged(Wt::WCheckBox *item, Wt::WContainerWidget *dropDownContainer, Wt::WPushButton *openButton, std::unordered_set<std::string> *saveItems) {
saveItems->clear();
bool unselect = (item->text() == "All" && item->isChecked());
@@ -1056,6 +1087,8 @@ void App::incomingBroadcast() {
extendSearchResultIfNeeded(broadcast);
} else if (broadcast["type"] == "userleft") {
removeUserFromSearch(broadcast);
} else if (broadcast["type"] == "history") {
showHistory(broadcast);
}
}
}