[fractal] Rename rooms_since to directory_pagination
- From: Daniel Garcia Moreno <danigm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [fractal] Rename rooms_since to directory_pagination
- Date: Tue, 23 Jun 2020 08:27:06 +0000 (UTC)
commit ee4c0ef256682ee12bc013272eeb528527450a3c
Author: Alejandro DomÃnguez <adomu net-c com>
Date: Wed Jun 17 04:49:48 2020 +0200
Rename rooms_since to directory_pagination
fractal-gtk/src/actions/global.rs | 1 -
fractal-gtk/src/app/connect/directory.rs | 5 ++++-
fractal-gtk/src/appop/directory.rs | 13 +++++++++----
fractal-gtk/src/appop/mod.rs | 26 ++++++++++++++++++++++++--
fractal-gtk/src/appop/state.rs | 4 +++-
5 files changed, 40 insertions(+), 9 deletions(-)
---
diff --git a/fractal-gtk/src/actions/global.rs b/fractal-gtk/src/actions/global.rs
index eaba6d8c..97515c26 100644
--- a/fractal-gtk/src/actions/global.rs
+++ b/fractal-gtk/src/actions/global.rs
@@ -26,7 +26,6 @@ pub enum AppState {
AccountSettings,
Directory,
}
-
impl<'a> From<&'a glib::Variant> for AppState {
fn from(v: &glib::Variant) -> AppState {
v.get::<String>().expect("Invalid back state type").into()
diff --git a/fractal-gtk/src/app/connect/directory.rs b/fractal-gtk/src/app/connect/directory.rs
index c1de8f79..95bea3c3 100644
--- a/fractal-gtk/src/app/connect/directory.rs
+++ b/fractal-gtk/src/app/connect/directory.rs
@@ -7,6 +7,7 @@ use gtk::prelude::*;
use libhandy::{Column, ColumnExt};
use crate::app::App;
+use crate::appop::RoomSearchPagination;
impl App {
pub fn connect_directory(&self) {
@@ -118,7 +119,9 @@ impl App {
op = self.op.clone();
q.connect_activate(move |_| {
- op.lock().unwrap().search_rooms(None);
+ let mut op = op.lock().unwrap();
+ op.directory_pagination = RoomSearchPagination::Initial;
+ op.search_rooms();
});
default_matrix_server_radio.connect_toggled(clone!(directory_choice_label,
default_matrix_server_radio, protocol_combo, other_homeserver_url_entry => move |_| {
diff --git a/fractal-gtk/src/appop/directory.rs b/fractal-gtk/src/appop/directory.rs
index 9f15b7a2..3a74492c 100644
--- a/fractal-gtk/src/appop/directory.rs
+++ b/fractal-gtk/src/appop/directory.rs
@@ -12,6 +12,7 @@ use crate::appop::AppOp;
use crate::backend::{BKCommand, BKResponse};
use crate::widgets;
+use super::RoomSearchPagination;
use crate::types::Room;
use fractal_api::r0::thirdparty::get_supported_protocols::ProtocolInstance;
@@ -47,7 +48,7 @@ impl AppOp {
}
}
- pub fn search_rooms(&mut self, rooms_since: Option<String>) {
+ pub fn search_rooms(&mut self) {
let login_data = unwrap_or_unit_return!(self.login_data.clone());
let other_protocol_radio = self
.ui
@@ -107,7 +108,7 @@ impl AppOp {
String::new()
};
- if rooms_since.is_none() {
+ if !self.directory_pagination.has_more() {
let directory = self
.ui
.builder
@@ -135,6 +136,7 @@ impl AppOp {
}
let search_term = q.get_text().unwrap().to_string();
+ let rooms_since = self.directory_pagination.clone().into();
let tx = self.backend.clone();
thread::spawn(move || {
let query = directory::room_search(
@@ -160,12 +162,15 @@ impl AppOp {
});
}
+ #[inline]
pub fn load_more_rooms(&mut self) {
- self.search_rooms(self.rooms_since.clone());
+ self.search_rooms();
}
pub fn append_directory_rooms(&mut self, rooms: Vec<Room>, rooms_since: Option<String>) {
- self.rooms_since = rooms_since;
+ self.directory_pagination = rooms_since
+ .map(RoomSearchPagination::Next)
+ .unwrap_or(RoomSearchPagination::NoMorePages);
let directory = self
.ui
diff --git a/fractal-gtk/src/appop/mod.rs b/fractal-gtk/src/appop/mod.rs
index 43df8893..19b0ad13 100644
--- a/fractal-gtk/src/appop/mod.rs
+++ b/fractal-gtk/src/appop/mod.rs
@@ -49,6 +49,28 @@ mod user;
use self::member::SearchType;
use self::message::TmpMsg;
+#[derive(Clone, Debug, PartialEq)]
+pub enum RoomSearchPagination {
+ Initial,
+ Next(String),
+ NoMorePages,
+}
+
+impl From<RoomSearchPagination> for Option<String> {
+ fn from(rooms_pagination: RoomSearchPagination) -> Option<String> {
+ match rooms_pagination {
+ RoomSearchPagination::Next(rooms_since) => Some(rooms_since),
+ _ => None,
+ }
+ }
+}
+
+impl RoomSearchPagination {
+ pub fn has_more(&self) -> bool {
+ *self != RoomSearchPagination::Initial
+ }
+}
+
#[derive(Clone, Debug)]
pub struct LoginData {
pub access_token: AccessToken,
@@ -82,7 +104,7 @@ pub struct AppOp {
pub media_viewer: Rc<RefCell<Option<widgets::MediaViewer>>>,
- pub rooms_since: Option<String>, // This is for directory searches
+ pub directory_pagination: RoomSearchPagination,
pub state: AppState,
pub since: Option<String>,
pub room_back_history: Rc<RefCell<Vec<AppState>>>,
@@ -121,7 +143,7 @@ impl AppOp {
state: AppState::Login,
room_back_history: Rc::new(RefCell::new(vec![])),
roomlist: widgets::RoomList::new(None, None),
- rooms_since: None,
+ directory_pagination: RoomSearchPagination::Initial,
unread_rooms: 0,
since: None,
unsent_messages: HashMap::new(),
diff --git a/fractal-gtk/src/appop/state.rs b/fractal-gtk/src/appop/state.rs
index 7853c18c..4fbd2045 100644
--- a/fractal-gtk/src/appop/state.rs
+++ b/fractal-gtk/src/appop/state.rs
@@ -2,6 +2,7 @@ use gtk;
use gtk::prelude::*;
use libhandy::LeafletExt;
+use super::RoomSearchPagination;
use crate::actions::AppState;
use crate::appop::AppOp;
@@ -78,7 +79,8 @@ impl AppOp {
}
if let AppState::Directory = self.state {
- self.search_rooms(None);
+ self.directory_pagination = RoomSearchPagination::Initial;
+ self.search_rooms();
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]