feat: Update notification in account settings (#1660)
This commit is contained in:
parent
a0c33254e7
commit
ba06fe1cb2
7 changed files with 32 additions and 5 deletions
|
@ -30,6 +30,7 @@ class Api::V1::AccountsController < Api::BaseController
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
|
@latest_chatwoot_version = ::Redis::Alfred.get(::Redis::Alfred::LATEST_CHATWOOT_VERSION)
|
||||||
render 'api/v1/accounts/show.json'
|
render 'api/v1/accounts/show.json'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,8 @@
|
||||||
"INBOUND_EMAIL_ENABLED": "Conversation continuity with emails is enabled for your account.",
|
"INBOUND_EMAIL_ENABLED": "Conversation continuity with emails is enabled for your account.",
|
||||||
"CUSTOM_EMAIL_DOMAIN_ENABLED": "You can receive emails in your custom domain now."
|
"CUSTOM_EMAIL_DOMAIN_ENABLED": "You can receive emails in your custom domain now."
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"UPDATE_CHATWOOT": "An update %{latestChatwootVersion} for Chatwoot is available. Please update your instance."
|
||||||
},
|
},
|
||||||
"FORMS": {
|
"FORMS": {
|
||||||
"MULTISELECT": {
|
"MULTISELECT": {
|
||||||
|
|
|
@ -79,7 +79,14 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="current-version">
|
<div class="current-version">
|
||||||
{{ `v${globalConfig.appVersion}` }}
|
<div>{{ `v${globalConfig.appVersion}` }}</div>
|
||||||
|
<div v-if="hasAnUpdateAvailable && globalConfig.displayManifest">
|
||||||
|
{{
|
||||||
|
$t('GENERAL_SETTINGS.UPDATE_CHATWOOT', {
|
||||||
|
latestChatwootVersion: latestChatwootVersion,
|
||||||
|
})
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<woot-submit-button
|
<woot-submit-button
|
||||||
|
@ -100,6 +107,7 @@ import { mapGetters } from 'vuex';
|
||||||
import alertMixin from 'shared/mixins/alertMixin';
|
import alertMixin from 'shared/mixins/alertMixin';
|
||||||
import configMixin from 'shared/mixins/configMixin';
|
import configMixin from 'shared/mixins/configMixin';
|
||||||
import accountMixin from '../../../../mixins/account';
|
import accountMixin from '../../../../mixins/account';
|
||||||
|
const semver = require('semver');
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
mixins: [accountMixin, alertMixin, configMixin],
|
mixins: [accountMixin, alertMixin, configMixin],
|
||||||
|
@ -112,6 +120,7 @@ export default {
|
||||||
supportEmail: '',
|
supportEmail: '',
|
||||||
features: {},
|
features: {},
|
||||||
autoResolveDuration: null,
|
autoResolveDuration: null,
|
||||||
|
latestChatwootVersion: null,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
validations: {
|
validations: {
|
||||||
|
@ -131,6 +140,16 @@ export default {
|
||||||
getAccount: 'accounts/getAccount',
|
getAccount: 'accounts/getAccount',
|
||||||
uiFlags: 'accounts/getUIFlags',
|
uiFlags: 'accounts/getUIFlags',
|
||||||
}),
|
}),
|
||||||
|
hasAnUpdateAvailable() {
|
||||||
|
if (!semver.valid(this.latestChatwootVersion)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return semver.lt(
|
||||||
|
this.globalConfig.appVersion,
|
||||||
|
this.latestChatwootVersion
|
||||||
|
);
|
||||||
|
},
|
||||||
languagesSortedByCode() {
|
languagesSortedByCode() {
|
||||||
const enabledLanguages = [...this.enabledLanguages];
|
const enabledLanguages = [...this.enabledLanguages];
|
||||||
return enabledLanguages.sort((l1, l2) =>
|
return enabledLanguages.sort((l1, l2) =>
|
||||||
|
@ -167,6 +186,7 @@ export default {
|
||||||
custom_email_domain_enabled,
|
custom_email_domain_enabled,
|
||||||
features,
|
features,
|
||||||
auto_resolve_duration,
|
auto_resolve_duration,
|
||||||
|
latest_chatwoot_version: latestChatwootVersion,
|
||||||
} = this.getAccount(this.accountId);
|
} = this.getAccount(this.accountId);
|
||||||
|
|
||||||
this.$root.$i18n.locale = locale;
|
this.$root.$i18n.locale = locale;
|
||||||
|
@ -178,6 +198,7 @@ export default {
|
||||||
this.customEmailDomainEnabled = custom_email_domain_enabled;
|
this.customEmailDomainEnabled = custom_email_domain_enabled;
|
||||||
this.features = features;
|
this.features = features;
|
||||||
this.autoResolveDuration = auto_resolve_duration;
|
this.autoResolveDuration = auto_resolve_duration;
|
||||||
|
this.latestChatwootVersion = latestChatwootVersion;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// Ignore error
|
// Ignore error
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
const {
|
const {
|
||||||
APP_VERSION: appVersion,
|
APP_VERSION: appVersion,
|
||||||
CREATE_NEW_ACCOUNT_FROM_DASHBOARD: createNewAccountFromDashboard,
|
|
||||||
BRAND_NAME: brandName,
|
BRAND_NAME: brandName,
|
||||||
|
CREATE_NEW_ACCOUNT_FROM_DASHBOARD: createNewAccountFromDashboard,
|
||||||
|
DISPLAY_MANIFEST: displayManifest,
|
||||||
INSTALLATION_NAME: installationName,
|
INSTALLATION_NAME: installationName,
|
||||||
LOGO_THUMBNAIL: logoThumbnail,
|
LOGO_THUMBNAIL: logoThumbnail,
|
||||||
LOGO: logo,
|
LOGO: logo,
|
||||||
|
@ -12,8 +13,9 @@ const {
|
||||||
|
|
||||||
const state = {
|
const state = {
|
||||||
appVersion,
|
appVersion,
|
||||||
createNewAccountFromDashboard,
|
|
||||||
brandName,
|
brandName,
|
||||||
|
createNewAccountFromDashboard,
|
||||||
|
displayManifest,
|
||||||
installationName,
|
installationName,
|
||||||
logo,
|
logo,
|
||||||
logoThumbnail,
|
logoThumbnail,
|
||||||
|
|
|
@ -6,3 +6,4 @@ json.custom_email_domain_enabled @account.custom_email_domain_enabled
|
||||||
json.support_email @account.support_email
|
json.support_email @account.support_email
|
||||||
json.features @account.all_features
|
json.features @account.all_features
|
||||||
json.auto_resolve_duration @account.auto_resolve_duration
|
json.auto_resolve_duration @account.auto_resolve_duration
|
||||||
|
json.latest_chatwoot_version @latest_chatwoot_version
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
"marked": "^1.2.7",
|
"marked": "^1.2.7",
|
||||||
"md5": "^2.3.0",
|
"md5": "^2.3.0",
|
||||||
"query-string": "5",
|
"query-string": "5",
|
||||||
|
"semver": "^7.3.4",
|
||||||
"spinkit": "~1.2.5",
|
"spinkit": "~1.2.5",
|
||||||
"tailwindcss": "^1.9.6",
|
"tailwindcss": "^1.9.6",
|
||||||
"tween.js": "~16.6.0",
|
"tween.js": "~16.6.0",
|
||||||
|
|
|
@ -9692,7 +9692,7 @@ semver@^6.0.0, semver@^6.1.2, semver@^6.3.0:
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
||||||
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
||||||
|
|
||||||
semver@^7.3.2:
|
semver@^7.3.2, semver@^7.3.4:
|
||||||
version "7.3.4"
|
version "7.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
|
||||||
integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
|
integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue