DEV: Remove 'diff local changes' when updating remote themes ()

Since 65e123498b4f8f260a8461e48995a3ca166b605e, it is now impossible to make local changes to remote themes, so this warning is not needed.
This commit is contained in:
David Taylor 2020-11-16 19:28:12 +00:00 committed by GitHub
parent 5e553c11e3
commit 475b4892e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 3 additions and 100 deletions
app
assets/javascripts/admin/addon/models
controllers/admin
models
config
lib/theme_store
spec

@ -5,11 +5,6 @@ import { or, gt } from "@ember/object/computed";
import RestModel from "discourse/models/rest";
import discourseComputed from "discourse-common/utils/decorators";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { ajax } from "discourse/lib/ajax";
import { escapeExpression } from "discourse/lib/utilities";
import highlightSyntax from "discourse/lib/highlight-syntax";
import { url } from "discourse/lib/computed";
import bootbox from "bootbox";
const THEME_UPLOAD_VAR = 2;
const FIELDS_IDS = [0, 1, 5];
@ -23,7 +18,6 @@ const Theme = RestModel.extend({
isPendingUpdates: gt("remote_theme.commits_behind", 0),
hasEditedFields: gt("editedFields.length", 0),
hasParents: gt("parent_themes.length", 0),
diffLocalChangesUrl: url("id", "/admin/themes/%@/diff_local_changes"),
@discourseComputed("theme_fields.[]")
targets() {
@ -292,37 +286,9 @@ const Theme = RestModel.extend({
},
updateToLatest() {
return ajax(this.diffLocalChangesUrl).then((json) => {
if (json && json.error) {
bootbox.alert(
I18n.t("generic_error_with_reason", {
error: json.error,
})
);
} else if (json && json.diff) {
bootbox.confirm(
I18n.t("admin.customize.theme.update_confirm") +
`<pre><code class="diff">${escapeExpression(
json.diff
)}</code></pre>`,
I18n.t("cancel"),
I18n.t("admin.customize.theme.update_confirm_yes"),
(result) => {
if (result) {
return this.save({ remote_update: true }).then(() =>
this.set("changed", false)
);
}
}
);
// TODO: Models shouldn't be updating the DOM
highlightSyntax(undefined, this.siteSettings, this.session);
} else {
return this.save({ remote_update: true }).then(() =>
this.set("changed", false)
);
}
});
return this.save({ remote_update: true }).then(() =>
this.set("changed", false)
);
},
changed: false,

@ -266,15 +266,6 @@ class Admin::ThemesController < Admin::AdminController
exporter.cleanup!
end
def diff_local_changes
theme = Theme.find_by(id: params[:id])
raise Discourse::InvalidParameters.new(:id) unless theme
changes = theme.remote_theme&.diff_local_changes
respond_to do |format|
format.json { render json: changes || {} }
end
end
def update_single_setting
params.require("name")
@theme = Theme.find_by(id: params[:id])

@ -200,21 +200,6 @@ class RemoteTheme < ActiveRecord::Base
end
end
def diff_local_changes
return unless is_git?
importer = ThemeStore::GitImporter.new(remote_url, private_key: private_key, branch: branch)
begin
importer.import!
rescue RemoteTheme::ImportError => err
{ error: err.message }
else
changes = importer.diff_local_changes(self.id)
return nil if changes.blank?
{ diff: changes }
end
end
def normalize_override(hex)
return unless hex

@ -213,7 +213,6 @@ Discourse::Application.routes.draw do
post "themes/upload_asset" => "themes#upload_asset"
post "themes/generate_key_pair" => "themes#generate_key_pair"
get "themes/:id/preview" => "themes#preview"
get "themes/:id/diff_local_changes" => "themes#diff_local_changes"
put "themes/:id/setting" => "themes#update_single_setting"
scope "/customize", constraints: AdminConstraint.new do

@ -30,27 +30,6 @@ class ThemeStore::GitImporter
end
end
def diff_local_changes(remote_theme_id)
theme = Theme.find_by(remote_theme_id: remote_theme_id)
raise Discourse::InvalidParameters.new(:id) unless theme
local_version = theme.remote_theme&.local_version
exporter = ThemeStore::ZipExporter.new(theme)
local_temp_folder = exporter.export_to_folder
Discourse::Utils.execute_command(chdir: @temp_folder) do |runner|
runner.exec("git", "checkout", local_version)
runner.exec("rm -rf ./*/")
runner.exec("cp", "-rf", "#{local_temp_folder}/#{exporter.export_name}/.", @temp_folder)
runner.exec("git", "checkout", "about.json")
# add + diff staged to catch uploads but exclude renamed assets
runner.exec("git", "add", "-A")
return runner.exec("git", "diff", "--staged", "--diff-filter=r")
end
ensure
FileUtils.rm_rf local_temp_folder if local_temp_folder
end
def commits_since(hash)
commit_hash, commits_behind = nil

@ -157,14 +157,6 @@ describe RemoteTheme do
scheme = ColorScheme.find_by(theme_id: @theme.id)
expect(scheme.colors.find_by(name: 'tertiary_low_color')).to eq(nil)
# It should detect local changes
@theme.set_field(target: :common, name: :scss, value: 'body {background-color: blue};')
@theme.save
@theme.reload
expect(remote.diff_local_changes[:diff]).not_to include("similarity index 100%")
expect(remote.diff_local_changes[:diff]).to include("background-color: blue")
end
end

@ -569,15 +569,6 @@ describe Admin::ThemesController do
end
end
describe '#diff_local_changes' do
let(:theme) { Fabricate(:theme) }
it "should return empty for a default theme" do
get "/admin/themes/#{theme.id}/diff_local_changes.json"
expect(response.body).to eq("{}")
end
end
describe '#update_single_setting' do
let(:theme) { Fabricate(:theme) }