From f116d57d11478f392c4ab3f642d3e9d42227d08e Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 30 Mar 2021 12:19:21 -0500 Subject: [PATCH 1/8] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0065a551c..d46c5a9f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Heart reaction works on Pleroma >= 2.3.0 +- Pagination of Blocks and Mutes ## [1.1.0] - 2020-10-05 ### Fixed From dfa1443832a8f60f756473cab4cd93277c1b3b1f Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 30 Mar 2021 12:19:42 -0500 Subject: [PATCH 2/8] Import Soapbox version/metadata from package.json --- app/soapbox/features/ui/components/link_footer.js | 12 +++++++----- package.json | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/soapbox/features/ui/components/link_footer.js b/app/soapbox/features/ui/components/link_footer.js index 6e12f46d2..a903d0e93 100644 --- a/app/soapbox/features/ui/components/link_footer.js +++ b/app/soapbox/features/ui/components/link_footer.js @@ -7,13 +7,15 @@ import { connect } from 'react-redux'; import { openModal } from '../../../actions/modal'; import { logOut } from 'soapbox/actions/auth'; import { isStaff } from 'soapbox/utils/accounts'; +import pkg from '../../../../../package.json'; + +const shortRepoName = url => new URL(url).pathname.substring(1); -// FIXME: Let this be configured const sourceCode = { - name: 'soapbox-fe', - url: 'https://gitlab.com/soapbox-pub/soapbox-fe', - repository: 'soapbox-pub/soapbox-fe', - version: '1.1.0', + name: pkg.name, + url: pkg.repository.url, + repository: shortRepoName(pkg.repository.url), + version: pkg.version, }; const mapStateToProps = state => { diff --git a/package.json b/package.json index bac81c6c8..e85487982 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "homepage": "https://soapbox.pub/", "repository": { "type": "git", - "url": "https://gitlab.com/soapbox-pub/soapbox-fe.git" + "url": "https://gitlab.com/soapbox-pub/soapbox-fe" }, "keywords": [ "fediverse", From f97bba2308492bfca272e4801bfb75ea4e75741a Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 30 Mar 2021 12:43:45 -0500 Subject: [PATCH 3/8] @preval sourceCode --- app/soapbox/features/ui/components/link_footer.js | 11 +---------- app/soapbox/utils/code.js | 11 +++++++++++ 2 files changed, 12 insertions(+), 10 deletions(-) create mode 100644 app/soapbox/utils/code.js diff --git a/app/soapbox/features/ui/components/link_footer.js b/app/soapbox/features/ui/components/link_footer.js index a903d0e93..0037bcb6c 100644 --- a/app/soapbox/features/ui/components/link_footer.js +++ b/app/soapbox/features/ui/components/link_footer.js @@ -7,16 +7,7 @@ import { connect } from 'react-redux'; import { openModal } from '../../../actions/modal'; import { logOut } from 'soapbox/actions/auth'; import { isStaff } from 'soapbox/utils/accounts'; -import pkg from '../../../../../package.json'; - -const shortRepoName = url => new URL(url).pathname.substring(1); - -const sourceCode = { - name: pkg.name, - url: pkg.repository.url, - repository: shortRepoName(pkg.repository.url), - version: pkg.version, -}; +import sourceCode from 'soapbox/utils/code'; const mapStateToProps = state => { const me = state.get('me'); diff --git a/app/soapbox/utils/code.js b/app/soapbox/utils/code.js new file mode 100644 index 000000000..aabd09f21 --- /dev/null +++ b/app/soapbox/utils/code.js @@ -0,0 +1,11 @@ +// @preval +const pkg = require('../../../package.json'); + +const shortRepoName = url => new URL(url).pathname.substring(1); + +module.exports = { + name: pkg.name, + url: pkg.repository.url, + repository: shortRepoName(pkg.repository.url), + version: pkg.version, +}; From a032369d33ac518cba529f6fd3bc15d748f170a7 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 30 Mar 2021 13:11:04 -0500 Subject: [PATCH 4/8] Include Soapbox FE commit hash when git is available --- app/soapbox/utils/code.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/soapbox/utils/code.js b/app/soapbox/utils/code.js index aabd09f21..c0d927331 100644 --- a/app/soapbox/utils/code.js +++ b/app/soapbox/utils/code.js @@ -1,11 +1,27 @@ // @preval const pkg = require('../../../package.json'); +const { execSync } = require('child_process'); const shortRepoName = url => new URL(url).pathname.substring(1); +const version = pkg => { + try { + const head = String(execSync('git rev-parse HEAD')); + const tag = String(execSync(`git rev-parse v${pkg.version}`)); + + if (head !== tag) { + return `${pkg.version}-${head.substring(0, 7)}`; + } else { + return pkg.version; + } + } catch (e) { + return pkg.version; + } +}; + module.exports = { name: pkg.name, url: pkg.repository.url, repository: shortRepoName(pkg.repository.url), - version: pkg.version, + version: version(pkg), }; From 5040bca304f9ac33c51f349821674645ead4eee5 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 30 Mar 2021 13:22:19 -0500 Subject: [PATCH 5/8] Always have LinkFooter on the right side --- app/soapbox/features/ui/index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/soapbox/features/ui/index.js b/app/soapbox/features/ui/index.js index 31131a757..aec52038e 100644 --- a/app/soapbox/features/ui/index.js +++ b/app/soapbox/features/ui/index.js @@ -154,11 +154,10 @@ const LAYOUT = { RIGHT: null, }, DEFAULT: { - LEFT: [ - , - ], + LEFT: null, RIGHT: [ , + , ], }, STATUS: { From 284aacccf07b4ee8ed193c2f80aa1cc4da76cd97 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 30 Mar 2021 14:02:26 -0500 Subject: [PATCH 6/8] Try to get version from GitLab CI first --- app/soapbox/utils/code.js | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/app/soapbox/utils/code.js b/app/soapbox/utils/code.js index c0d927331..b9d33ccec 100644 --- a/app/soapbox/utils/code.js +++ b/app/soapbox/utils/code.js @@ -3,20 +3,32 @@ const pkg = require('../../../package.json'); const { execSync } = require('child_process'); const shortRepoName = url => new URL(url).pathname.substring(1); +const trimHash = hash => hash.substring(0, 7); const version = pkg => { + // Try to discern from GitLab CI first + const { CI_COMMIT_TAG, CI_COMMIT_REF_NAME, CI_COMMIT_SHA } = process.env; + + if (CI_COMMIT_TAG === `v${pkg.version}` || CI_COMMIT_REF_NAME === 'stable') { + return pkg.version; + } + + if (typeof CI_COMMIT_SHA === 'string') { + return `${pkg.version}-${trimHash(CI_COMMIT_SHA)}`; + } + + // Fall back to git directly try { const head = String(execSync('git rev-parse HEAD')); const tag = String(execSync(`git rev-parse v${pkg.version}`)); - if (head !== tag) { - return `${pkg.version}-${head.substring(0, 7)}`; - } else { - return pkg.version; - } + if (head !== tag) return `${pkg.version}-${trimHash(head)}`; } catch (e) { - return pkg.version; + // Continue } + + // Fall back to version in package.json + return pkg.version; }; module.exports = { From 5b93da45cafa77f16e5a9e65bfae0fd698b823d0 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 30 Mar 2021 15:24:02 -0500 Subject: [PATCH 7/8] Don't cache code.js --- webpack/rules/babel-git.js | 16 ++++++++++++++++ webpack/rules/index.js | 2 ++ 2 files changed, 18 insertions(+) create mode 100644 webpack/rules/babel-git.js diff --git a/webpack/rules/babel-git.js b/webpack/rules/babel-git.js new file mode 100644 index 000000000..0a1919e97 --- /dev/null +++ b/webpack/rules/babel-git.js @@ -0,0 +1,16 @@ +const { resolve } = require('path'); +const { env } = require('../configuration'); + +module.exports = { + test: resolve(__dirname, '../../app/soapbox/utils/code.js'), + use: [ + { + loader: 'babel-loader', + options: { + cacheDirectory: false, + cacheCompression: env.NODE_ENV === 'production', + compact: env.NODE_ENV === 'production', + }, + }, + ], +}; diff --git a/webpack/rules/index.js b/webpack/rules/index.js index 7cf12f0ab..ad172deff 100644 --- a/webpack/rules/index.js +++ b/webpack/rules/index.js @@ -1,4 +1,5 @@ const babel = require('./babel'); +const git = require('./babel-git'); const css = require('./css'); const file = require('./file'); const nodeModules = require('./node_modules'); @@ -11,4 +12,5 @@ module.exports = [ css, nodeModules, babel, + git, ]; From 8b7c8f6eac569c021a6438cd246dfa3c256a3700 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 30 Mar 2021 15:40:58 -0500 Subject: [PATCH 8/8] Fix preval cache issues --- webpack/loaders/git-loader.js | 8 ++++++++ webpack/rules/babel-git.js | 3 +++ webpack/rules/git-refresh.js | 9 +++++++++ webpack/rules/index.js | 2 ++ 4 files changed, 22 insertions(+) create mode 100644 webpack/loaders/git-loader.js create mode 100644 webpack/rules/git-refresh.js diff --git a/webpack/loaders/git-loader.js b/webpack/loaders/git-loader.js new file mode 100644 index 000000000..5f003ffec --- /dev/null +++ b/webpack/loaders/git-loader.js @@ -0,0 +1,8 @@ +const { resolve } = require('path'); + +// Forces recompile whenever the current commit changes +// Useful for generating the version hash in the UI +module.exports = function(source, map) { + this.addDependency(resolve(__dirname, '../../.git/logs/HEAD')); + this.callback(null, source, map); +}; diff --git a/webpack/rules/babel-git.js b/webpack/rules/babel-git.js index 0a1919e97..b68139ed6 100644 --- a/webpack/rules/babel-git.js +++ b/webpack/rules/babel-git.js @@ -1,6 +1,9 @@ const { resolve } = require('path'); const { env } = require('../configuration'); +// This is a hack, used in conjunction with rules/git-refresh.js +// https://github.com/kentcdodds/babel-plugin-preval/issues/19 + module.exports = { test: resolve(__dirname, '../../app/soapbox/utils/code.js'), use: [ diff --git a/webpack/rules/git-refresh.js b/webpack/rules/git-refresh.js new file mode 100644 index 000000000..0b708b746 --- /dev/null +++ b/webpack/rules/git-refresh.js @@ -0,0 +1,9 @@ +const { resolve } = require('path'); + +// Recompile code.js whenever git changes +module.exports = { + test: resolve(__dirname, '../../app/soapbox/utils/code.js'), + use: { + loader: resolve(__dirname, '../loaders/git-loader.js'), + }, +}; diff --git a/webpack/rules/index.js b/webpack/rules/index.js index ad172deff..467b23f22 100644 --- a/webpack/rules/index.js +++ b/webpack/rules/index.js @@ -1,5 +1,6 @@ const babel = require('./babel'); const git = require('./babel-git'); +const gitRefresh = require('./git-refresh'); const css = require('./css'); const file = require('./file'); const nodeModules = require('./node_modules'); @@ -13,4 +14,5 @@ module.exports = [ nodeModules, babel, git, + gitRefresh, ];