summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDessalines <tyhou13@gmx.com>2020-04-14 12:24:05 -0400
committerDessalines <tyhou13@gmx.com>2020-04-14 12:24:05 -0400
commit9878a58452dad21ce914e84160ada7833058955d (patch)
treee975a6ea028710dc91fd28ed734c315d6cb4f359
parent9d2046d5a29dd01db75d21c41f7732044779ea90 (diff)
Fixing unwrap crash with site_view.rs
-rw-r--r--server/src/api/site.rs18
1 files changed, 11 insertions, 7 deletions
diff --git a/server/src/api/site.rs b/server/src/api/site.rs
index 6bd90149..ad45e8d1 100644
--- a/server/src/api/site.rs
+++ b/server/src/api/site.rs
@@ -281,8 +281,7 @@ impl Perform<GetSiteResponse> for Oper<GetSite> {
fn perform(&self, conn: &PgConnection) -> Result<GetSiteResponse, Error> {
let _data: &GetSite = &self.data;
- let site = Site::read(&conn, 1);
- let site_view = if site.is_ok() {
+ let site_view = if let Ok(_site) = Site::read(&conn, 1) {
Some(SiteView::read(&conn)?)
} else if let Some(setup) = Settings::get().setup.as_ref() {
let register = Register {
@@ -312,11 +311,16 @@ impl Perform<GetSiteResponse> for Oper<GetSite> {
};
let mut admins = UserView::admins(&conn)?;
- if site_view.is_some() {
- let site_creator_id = site_view.to_owned().unwrap().creator_id;
- let creator_index = admins.iter().position(|r| r.id == site_creator_id).unwrap();
- let creator_user = admins.remove(creator_index);
- admins.insert(0, creator_user);
+
+ // Make sure the site creator is the top admin
+ if let Some(site_view) = site_view.to_owned() {
+ let site_creator_id = site_view.creator_id;
+ // TODO investigate why this is sometimes coming back null
+ // Maybe user_.admin isn't being set to true?
+ if let Some(creator_index) = admins.iter().position(|r| r.id == site_creator_id) {
+ let creator_user = admins.remove(creator_index);
+ admins.insert(0, creator_user);
+ }
}
let banned = UserView::banned(&conn)?;