diff options
author | Dessalines <tyhou13@gmx.com> | 2020-04-14 12:24:05 -0400 |
---|---|---|
committer | Dessalines <tyhou13@gmx.com> | 2020-04-14 12:24:05 -0400 |
commit | 9878a58452dad21ce914e84160ada7833058955d (patch) | |
tree | e975a6ea028710dc91fd28ed734c315d6cb4f359 | |
parent | 9d2046d5a29dd01db75d21c41f7732044779ea90 (diff) |
Fixing unwrap crash with site_view.rs
-rw-r--r-- | server/src/api/site.rs | 18 |
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)?; |