Chore: Feature Flags for Channels (#1010)

This commit is contained in:
Sojan Jose 2020-07-06 11:16:19 +05:30 committed by GitHub
parent b633126b35
commit e41bd56f41
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 42 additions and 5 deletions

View file

@ -40,10 +40,23 @@ export default {
type: String,
required: true,
},
enabledFeatures: {
type: Object,
required: true,
},
},
methods: {
isActive(channel) {
return ['facebook', 'website', 'twitter', 'twilio'].includes(channel);
if (Object.keys(this.enabledFeatures) === 0) {
return false;
}
if (channel === 'facebook') {
return this.enabledFeatures.channel_facebook;
}
if (channel === 'twitter') {
return this.enabledFeatures.channel_facebook;
}
return ['website', 'twilio'].includes(channel);
},
onItemClick() {
if (this.isActive(this.channel)) {

View file

@ -9,6 +9,7 @@
v-for="channel in channelList"
:key="channel"
:channel="channel"
:enabled-features="enabledFeatures"
@channel-item-click="initChannelAuth"
/>
</div>
@ -19,6 +20,7 @@
import ChannelItem from 'dashboard/components/widgets/ChannelItem';
import router from '../../../index';
import PageHeader from '../SettingsSubPageHeader';
import { mapGetters } from 'vuex';
export default {
components: {
@ -35,9 +37,25 @@ export default {
'telegram',
'line',
],
enabledFeatures: {},
};
},
computed: {
account() {
return this.$store.getters['accounts/getAccount'](this.accountId);
},
...mapGetters({
accountId: 'getCurrentAccountId',
}),
},
mounted() {
this.initializeEnabledFeatures();
},
methods: {
async initializeEnabledFeatures() {
await this.$store.dispatch('accounts/get', this.accountId);
this.enabledFeatures = this.account.features;
},
initChannelAuth(channel) {
const params = {
page: 'new',

View file

@ -3,7 +3,7 @@
# Table name: users
#
# id :integer not null, primary key
# availability :integer default(0)
# availability :integer default("online")
# confirmation_sent_at :datetime
# confirmation_token :string
# confirmed_at :datetime

View file

@ -4,4 +4,4 @@ json.locale @account.locale
json.domain @account.domain
json.domain_emails_enabled @account.domain_emails_enabled
json.support_email @account.support_email
json.features @account.enabled_features
json.features @account.all_features

View file

@ -5,4 +5,5 @@
enabled: false
- name: channel_facebook
enabled: true
- name: channel_twitter
enabled: true

View file

@ -0,0 +1,5 @@
class AddTwitterFeatureFlag < ActiveRecord::Migration[6.0]
def change
ConfigLoader.new.process
end
end

View file

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2020_06_29_122646) do
ActiveRecord::Schema.define(version: 2020_07_04_173104) do
# These are extensions that must be enabled in order to support this database
enable_extension "pg_stat_statements"