diff --git a/app/controllers/super_admin/app_configs_controller.rb b/app/controllers/super_admin/app_configs_controller.rb index 550b6c893..8ab1b1cd9 100644 --- a/app/controllers/super_admin/app_configs_controller.rb +++ b/app/controllers/super_admin/app_configs_controller.rb @@ -45,6 +45,8 @@ class SuperAdmin::AppConfigsController < SuperAdmin::ApplicationController %w[LINEAR_CLIENT_ID LINEAR_CLIENT_SECRET] when 'instagram' %w[INSTAGRAM_APP_ID INSTAGRAM_APP_SECRET INSTAGRAM_VERIFY_TOKEN INSTAGRAM_API_VERSION ENABLE_INSTAGRAM_CHANNEL_HUMAN_AGENT] + when 'github' + %w[GITHUB_CLIENT_ID GITHUB_CLIENT_SECRET] else %w[ENABLE_ACCOUNT_SIGNUP FIREBASE_PROJECT_ID FIREBASE_CREDENTIALS] end diff --git a/app/javascript/dashboard/i18n/locale/en/integrations.json b/app/javascript/dashboard/i18n/locale/en/integrations.json index 8af57975c..dca1d056f 100644 --- a/app/javascript/dashboard/i18n/locale/en/integrations.json +++ b/app/javascript/dashboard/i18n/locale/en/integrations.json @@ -15,6 +15,14 @@ }, "ERROR": "There was an error connecting to Shopify. Please try again or contact support if the issue persists." }, + "GITHUB": { + "TITLE": "Connect Github", + "LABEL": "Github Client ID", + "PLACEHOLDER": "Enter your Github Client ID", + "HELP": "Enter your Github Client ID", + "CANCEL": "Cancel", + "SUBMIT": "Connect" + }, "HEADER": "Integrations", "DESCRIPTION": "Chatwoot integrates with multiple tools and services to improve your team's efficiency. Explore the list below to configure your favorite apps.", "LEARN_MORE": "Learn more about integrations", diff --git a/app/javascript/dashboard/routes/dashboard/settings/integrations/Github.vue b/app/javascript/dashboard/routes/dashboard/settings/integrations/Github.vue new file mode 100644 index 000000000..78e6b7314 --- /dev/null +++ b/app/javascript/dashboard/routes/dashboard/settings/integrations/Github.vue @@ -0,0 +1,57 @@ + + + diff --git a/app/javascript/dashboard/routes/dashboard/settings/integrations/integrations.routes.js b/app/javascript/dashboard/routes/dashboard/settings/integrations/integrations.routes.js index e50eccb3a..2cbeaa0ea 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/integrations/integrations.routes.js +++ b/app/javascript/dashboard/routes/dashboard/settings/integrations/integrations.routes.js @@ -9,7 +9,7 @@ import Slack from './Slack.vue'; import SettingsContent from '../Wrapper.vue'; import Linear from './Linear.vue'; import Shopify from './Shopify.vue'; - +import Github from './Github.vue'; export default { routes: [ { @@ -90,6 +90,16 @@ export default { }, props: route => ({ code: route.query.code }), }, + { + path: 'github', + name: 'settings_integrations_github', + component: Github, + meta: { + featureFlag: FEATURE_FLAGS.INTEGRATIONS, + permissions: ['administrator'], + }, + props: route => ({ code: route.query.code }), + }, { path: 'shopify', name: 'settings_integrations_shopify', diff --git a/app/models/integrations/app.rb b/app/models/integrations/app.rb index 1f88cdd4d..080438ffd 100644 --- a/app/models/integrations/app.rb +++ b/app/models/integrations/app.rb @@ -51,6 +51,8 @@ class Integrations::App GlobalConfigService.load('LINEAR_CLIENT_ID', nil).present? when 'shopify' account.feature_enabled?('shopify_integration') && GlobalConfigService.load('SHOPIFY_CLIENT_ID', nil).present? + when 'github' + account.feature_enabled?('github_integration') && GlobalConfigService.load('GITHUB_CLIENT_ID', nil).present? else true end diff --git a/app/views/super_admin/application/_icons.html.erb b/app/views/super_admin/application/_icons.html.erb index fb10c1035..0fb6d085b 100644 --- a/app/views/super_admin/application/_icons.html.erb +++ b/app/views/super_admin/application/_icons.html.erb @@ -159,4 +159,9 @@ + + + + + \ No newline at end of file diff --git a/config/features.yml b/config/features.yml index ee0b498ce..5ae0255f1 100644 --- a/config/features.yml +++ b/config/features.yml @@ -166,3 +166,6 @@ - name: channel_instagram display_name: Instagram Channel enabled: true +- name: github_integration + display_name: Github Integration + enabled: false diff --git a/config/installation_config.yml b/config/installation_config.yml index 1a891c420..d95ca37b3 100644 --- a/config/installation_config.yml +++ b/config/installation_config.yml @@ -319,3 +319,17 @@ value: 'v22.0' locked: true # ------- End of Instagram Channel Related Config ------- # + +# ------- Github Integration Config ------- # +- name: GITHUB_CLIENT_ID + display_title: 'Github Client ID' + value: + locked: false + description: 'Github client ID' +- name: GITHUB_CLIENT_SECRET + display_title: 'Github Client Secret' + value: + locked: false + description: 'Github client secret' + type: secret +## ------ End of Github Integration Config ------- # diff --git a/config/integration/apps.yml b/config/integration/apps.yml index b4d0d8394..e44c17c77 100644 --- a/config/integration/apps.yml +++ b/config/integration/apps.yml @@ -186,3 +186,10 @@ shopify: i18n_key: shopify hook_type: account allow_multiple_hooks: false +github: + id: github + logo: github.png + i18n_key: github + action: /github + hook_type: account + allow_multiple_hooks: false diff --git a/config/locales/en.yml b/config/locales/en.yml index a4341927e..5b9fad58f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -234,6 +234,9 @@ en: shopify: name: 'Shopify' description: 'Connect your Shopify store to access order details, customer information, and product data directly within your conversations and helps your support team provide faster, more contextual assistance to your customers.' + github: + name: 'Github' + description: 'Connect your Github account to access your repositories, issues, and pull requests directly within your conversations and helps your support team provide faster, more contextual assistance to your customers.' captain: copilot_error: 'Please connect an assistant to this inbox to use Copilot' copilot_limit: 'You are out of Copilot credits. You can buy more credits from the billing section.' diff --git a/enterprise/app/helpers/super_admin/features.yml b/enterprise/app/helpers/super_admin/features.yml index 3767d6468..1b64beb56 100644 --- a/enterprise/app/helpers/super_admin/features.yml +++ b/enterprise/app/helpers/super_admin/features.yml @@ -97,3 +97,9 @@ shopify: enabled: true icon: 'icon-shopify' config_key: 'shopify' +github: + name: 'Github' + description: 'Configuration for setting up Github' + enabled: true + icon: 'icon-github' + config_key: 'github' diff --git a/public/dashboard/images/integrations/github-dark.png b/public/dashboard/images/integrations/github-dark.png new file mode 100644 index 000000000..d66bdeb47 Binary files /dev/null and b/public/dashboard/images/integrations/github-dark.png differ diff --git a/public/dashboard/images/integrations/github.png b/public/dashboard/images/integrations/github.png new file mode 100644 index 000000000..10b895fc8 Binary files /dev/null and b/public/dashboard/images/integrations/github.png differ