]> Untitled Git - lemmy.git/commitdiff
Adding version to GetSite. Fixes #1001 (#1002)
authorDessalines <dessalines@users.noreply.github.com>
Tue, 21 Jul 2020 13:20:23 +0000 (09:20 -0400)
committerGitHub <noreply@github.com>
Tue, 21 Jul 2020 13:20:23 +0000 (13:20 +0000)
* Adding version to GetSite. Fixes #1001

* Removing version.ts file

docker/prod/deploy.sh
docs/src/contributing_websocket_http_api.md
server/src/api/site.rs
ui/src/components/admin-settings.tsx
ui/src/components/footer.tsx
ui/src/components/main.tsx
ui/src/components/navbar.tsx
ui/src/components/post.tsx
ui/src/interfaces.ts
ui/src/version.ts [deleted file]

index 3b7ee174047f43e3c60d1d71691bf7236007e272..2e8728180cc0a4f571ac08c0a2533e5f6fcf9e9f 100755 (executable)
@@ -12,8 +12,6 @@ third_semver=$(echo $new_tag | cut -d "." -f 3)
 
 # Setting the version on the front end
 cd ../../
-echo "export const version: string = '$new_tag';" > "ui/src/version.ts"
-git add "ui/src/version.ts"
 # Setting the version on the backend
 echo "pub const VERSION: &str = \"$new_tag\";" > "server/src/version.rs"
 git add "server/src/version.rs"
index 5af89431a5a5a260c1fa9547ebc08d224167cca1..7aab357820b24c1eb7af7f29c6df99348a856962 100644 (file)
@@ -754,6 +754,8 @@ Search types are `All, Comments, Posts, Communities, Users, Url`
     site: Option<SiteView>,
     admins: Vec<UserView>,
     banned: Vec<UserView>,
+    online: usize, // This is currently broken
+    version: String,
   }
 }
 ```
index 241a80e31e97014a4ba45504a1edab4b686a7e9a..a945d9ec08af3da679f6ad58f2bbd2d539cd31fd 100644 (file)
@@ -3,6 +3,7 @@ use crate::{
   api::{claims::Claims, APIError, Oper, Perform},
   apub::fetcher::search_by_apub_id,
   blocking,
+  version,
   websocket::{server::SendAllMessage, UserOperation, WebsocketInfo},
   DbPool,
   LemmyError,
@@ -110,6 +111,7 @@ pub struct GetSiteResponse {
   admins: Vec<UserView>,
   banned: Vec<UserView>,
   pub online: usize,
+  version: String,
 }
 
 #[derive(Serialize, Deserialize)]
@@ -424,6 +426,7 @@ impl Perform for Oper<GetSite> {
       admins,
       banned,
       online,
+      version: version::VERSION.to_string(),
     })
   }
 }
@@ -666,6 +669,7 @@ impl Perform for Oper<TransferSite> {
       admins,
       banned,
       online: 0,
+      version: version::VERSION.to_string(),
     })
   }
 }
index 0034c229e9129724937c057f62ff642e2380de4f..6fe4e93476127933106b4577f39507a6025e67c0 100644 (file)
@@ -46,6 +46,7 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
       admins: [],
       banned: [],
       online: null,
+      version: null,
     },
     siteConfigForm: {
       config_hjson: null,
index cadb6aa39eaafb07a256a93afb93318a4fcce4cf..e911370fab858b1e166b3428f0540166a090ff94 100644 (file)
@@ -1,12 +1,41 @@
 import { Component } from 'inferno';
 import { Link } from 'inferno-router';
-import { repoUrl } from '../utils';
-import { version } from '../version';
 import { i18n } from '../i18next';
+import { Subscription } from 'rxjs';
+import { retryWhen, delay, take } from 'rxjs/operators';
+import { WebSocketService } from '../services';
+import { repoUrl, wsJsonToRes } from '../utils';
+import {
+  UserOperation,
+  WebSocketJsonResponse,
+  GetSiteResponse,
+} from '../interfaces';
 
-export class Footer extends Component<any, any> {
+interface FooterState {
+  version: string;
+}
+
+export class Footer extends Component<any, FooterState> {
+  private wsSub: Subscription;
+  emptyState: FooterState = {
+    version: null,
+  };
   constructor(props: any, context: any) {
     super(props, context);
+
+    this.state = this.emptyState;
+
+    this.wsSub = WebSocketService.Instance.subject
+      .pipe(retryWhen(errors => errors.pipe(delay(3000), take(10))))
+      .subscribe(
+        msg => this.parseMessage(msg),
+        err => console.error(err),
+        () => console.log('complete')
+      );
+  }
+
+  componentWillUnmount() {
+    this.wsSub.unsubscribe();
   }
 
   render() {
@@ -15,7 +44,7 @@ export class Footer extends Component<any, any> {
         <div className="navbar-collapse">
           <ul class="navbar-nav ml-auto">
             <li class="nav-item">
-              <span class="navbar-text">{version}</span>
+              <span class="navbar-text">{this.state.version}</span>
             </li>
             <li class="nav-item">
               <Link class="nav-link" to="/modlog">
@@ -42,4 +71,12 @@ export class Footer extends Component<any, any> {
       </nav>
     );
   }
+  parseMessage(msg: WebSocketJsonResponse) {
+    let res = wsJsonToRes(msg);
+
+    if (res.op == UserOperation.GetSite) {
+      let data = res.data as GetSiteResponse;
+      this.setState({ version: data.version });
+    }
+  }
 }
index 0392090a5f3f26bc601a9470db0a7a644aba4d84..4b1db64fe80d69bd335d53fc89de991e23cbacc8 100644 (file)
@@ -107,6 +107,7 @@ export class Main extends Component<any, MainState> {
       admins: [],
       banned: [],
       online: null,
+      version: null,
     },
     showEditSite: false,
     loading: true,
index a332f0e5f9ce91ad6121ffb9c4c85e90c143b692..d548320982e8e5dff945472ce9fe95de10efaec6 100644 (file)
@@ -30,7 +30,6 @@ import {
   messageToastify,
   md,
 } from '../utils';
-import { version } from '../version';
 import { i18n } from '../i18next';
 
 interface NavbarState {
@@ -41,6 +40,7 @@ interface NavbarState {
   messages: Array<PrivateMessage>;
   unreadCount: number;
   siteName: string;
+  version: string;
   admins: Array<UserView>;
   searchParam: string;
   toggleSearch: boolean;
@@ -58,6 +58,7 @@ export class Navbar extends Component<any, NavbarState> {
     messages: [],
     expanded: false,
     siteName: undefined,
+    version: undefined,
     admins: [],
     searchParam: '',
     toggleSearch: false,
@@ -150,7 +151,7 @@ export class Navbar extends Component<any, NavbarState> {
   navbar() {
     return (
       <nav class="container-fluid navbar navbar-expand-md navbar-light shadow p-0 px-3">
-        <Link title={version} class="navbar-brand" to="/">
+        <Link title={this.state.version} class="navbar-brand" to="/">
           {this.state.siteName}
         </Link>
         {this.state.isLoggedIn && (
@@ -395,6 +396,7 @@ export class Navbar extends Component<any, NavbarState> {
 
       if (data.site && !this.state.siteName) {
         this.state.siteName = data.site.name;
+        this.state.version = data.version;
         this.state.admins = data.admins;
         this.setState(this.state);
       }
index 9eef286c9744cb5fea34aa4c91e1e03cb8da447d..c654d4bcd9a4a84cc8e3e4c67c76a048b9b50f86 100644 (file)
@@ -92,6 +92,7 @@ export class Post extends Component<any, PostState> {
         enable_nsfw: undefined,
       },
       online: null,
+      version: null,
     },
   };
 
index dc860e0684acb03b3a2b9635a272772ee6eb83ab..1a962939546fb006aca33dfd13a94ac3cd6059f8 100644 (file)
@@ -758,6 +758,7 @@ export interface GetSiteResponse {
   admins: Array<UserView>;
   banned: Array<UserView>;
   online: number;
+  version: string;
 }
 
 export interface SiteResponse {
diff --git a/ui/src/version.ts b/ui/src/version.ts
deleted file mode 100644 (file)
index c5f8777..0000000
+++ /dev/null
@@ -1 +0,0 @@
-export const version: string = 'v0.7.25';