diff --git a/Composer/packages/client/src/constants/index.ts b/Composer/packages/client/src/constants/index.ts
index 08057005b6..576f2761b6 100644
--- a/Composer/packages/client/src/constants/index.ts
+++ b/Composer/packages/client/src/constants/index.ts
@@ -66,7 +66,6 @@ export enum ActionTypes {
RELOAD_BOT_FAILURE = 'RELOAD_BOT_FAILURE',
UPDATE_SKILL_SUCCESS = 'UPDATE_SKILL_SUCCESS',
SYNC_ENV_SETTING = 'SYNC_ENV_SETTING',
- GET_ENV_SETTING = 'GET_ENV_SETTING',
SET_ERROR = 'SET_ERROR',
REMOVE_RECENT_PROJECT = 'REMOVE_RECENT_PROJECT',
EDITOR_RESET_VISUAL = 'EDITOR_RESET_VISUAL',
diff --git a/Composer/packages/client/src/pages/setting/dialog-settings/index.tsx b/Composer/packages/client/src/pages/setting/dialog-settings/index.tsx
index e51e2139d3..078065f52b 100644
--- a/Composer/packages/client/src/pages/setting/dialog-settings/index.tsx
+++ b/Composer/packages/client/src/pages/setting/dialog-settings/index.tsx
@@ -3,17 +3,15 @@
/** @jsx jsx */
import { jsx } from '@emotion/core';
-import { useState, useContext } from 'react';
+import { useContext } from 'react';
import { JsonEditor } from '@bfc/code-editor';
import formatMessage from 'format-message';
-import { ChoiceGroup } from 'office-ui-fabric-react/lib/ChoiceGroup';
import { Link } from 'office-ui-fabric-react/lib/Link';
import { RouteComponentProps } from '@reach/router';
import { StoreContext } from '../../../store';
-import { isAbsHosted } from '../../../utils/envUtil';
-import { hostedSettings, hostedControls, slotChoice, settingsEditor } from './style';
+import { hostedSettings, hostedControls, settingsEditor } from './style';
const hostControlLabels = {
showKeys: formatMessage('Show keys'),
@@ -28,27 +26,12 @@ const hostControlLabels = {
export const DialogSettings: React.FC = () => {
const { state, actions } = useContext(StoreContext);
- const { botName, settings: origSettings, botEnvironment, projectId } = state;
- const absHosted = isAbsHosted();
- const { luis, MicrosoftAppPassword, MicrosoftAppId, ...settings } = origSettings;
- const managedSettings = { luis, MicrosoftAppPassword, MicrosoftAppId };
- const visibleSettings = absHosted ? settings : origSettings;
- const [slot, setSlot] = useState(botEnvironment === 'editing' ? 'integration' : botEnvironment);
-
- const slots = [
- { key: 'production', text: hostControlLabels.productionSlot, checked: slot === 'production' },
- { key: 'integration', text: hostControlLabels.integrationSlot, checked: slot === 'integration' },
- ];
-
- const changeSlot = (_, option) => {
- setSlot(option.key);
- actions.setDialogSettingsSlot(projectId, option.key);
- };
+ const { botName, settings, projectId } = state;
const saveChangeResult = (result) => {
try {
- const mergedResult = absHosted ? { ...managedSettings, ...result } : result;
- actions.setSettings(projectId, botName, mergedResult, absHosted ? slot : undefined);
+ const mergedResult = result;
+ actions.setSettings(projectId, botName, mergedResult);
} catch (err) {
// eslint-disable-next-line no-console
console.error(err.message);
@@ -68,17 +51,12 @@ export const DialogSettings: React.FC = () => {
{hostControlLabels.botSettingDescription}
{hostControlLabels.learnMore}
- {absHosted ? : null}
);
@@ -86,7 +64,7 @@ export const DialogSettings: React.FC = () => {
) : (
diff --git a/Composer/packages/client/src/pages/setting/dialog-settings/style.ts b/Composer/packages/client/src/pages/setting/dialog-settings/style.ts
index 489b7ddbf9..15bf7acfa2 100644
--- a/Composer/packages/client/src/pages/setting/dialog-settings/style.ts
+++ b/Composer/packages/client/src/pages/setting/dialog-settings/style.ts
@@ -23,10 +23,6 @@ export const hostedControls = css`
}
`;
-export const slotChoice = css`
- max-width: 40ch;
-`;
-
export const settingsEditor = css`
flex: 1;
max-height: 70%;
diff --git a/Composer/packages/client/src/store/action/setting.ts b/Composer/packages/client/src/store/action/setting.ts
index a8339c0147..03d2257173 100644
--- a/Composer/packages/client/src/store/action/setting.ts
+++ b/Composer/packages/client/src/store/action/setting.ts
@@ -4,8 +4,6 @@
import { ActionCreator, DialogSetting } from '../types';
import { ActionTypes } from './../../constants/index';
-import { BotEnvironments } from './../../utils/envUtil';
-import httpClient from './../../utils/httpUtil';
export const setSettings: ActionCreator = async (
{ dispatch },
@@ -17,31 +15,8 @@ export const setSettings: ActionCreator = async (
type: ActionTypes.SYNC_ENV_SETTING,
payload: {
projectId,
+ botName,
settings,
},
});
};
-
-export const setDialogSettingsSlot = async ({ dispatch }, projectId: string, slot?: BotEnvironments) => {
- const suffix = slot ? `/${slot}` : '';
- const url = `/projects/${projectId}/settings${suffix}`;
-
- try {
- const response = await httpClient.get(url);
- const settings = response.data;
- dispatch({
- type: ActionTypes.GET_ENV_SETTING,
- payload: {
- settings,
- },
- });
- } catch (err) {
- dispatch({
- type: ActionTypes.SET_ERROR,
- payload: {
- message: err.response && err.response.data.message ? err.reponse.data.message : err,
- summary: 'DLG SETTINGS ERROR',
- },
- });
- }
-};
diff --git a/Composer/packages/client/src/store/reducer/index.ts b/Composer/packages/client/src/store/reducer/index.ts
index ae90331bd7..e98ab0f3b5 100644
--- a/Composer/packages/client/src/store/reducer/index.ts
+++ b/Composer/packages/client/src/store/reducer/index.ts
@@ -428,8 +428,7 @@ const dismissSkillManifestModal: ReducerFunc = (state) => {
return state;
};
-const syncEnvSetting: ReducerFunc = (state, { settings }) => {
- const { botName } = state;
+const syncEnvSetting: ReducerFunc = (state, { settings, botName }) => {
// set value in local storage
for (const property of SensitiveProperties) {
if (has(settings, property)) {
@@ -441,13 +440,6 @@ const syncEnvSetting: ReducerFunc = (state, { settings }) => {
return state;
};
-const getEnvSetting: ReducerFunc = (state, { settings }) => {
- state.settings = settings;
- refreshLocalStorage(state.botName, state.settings);
- mergeLocalStorage(state.botName, state.settings);
- return state;
-};
-
const setTemplateProjects: ReducerFunc = (state, { response } = {}) => {
const data = response && response.data;
@@ -677,7 +669,6 @@ export const reducer = createReducer({
[ActionTypes.REMOVE_SKILL_MANIFEST]: removeSkillManifest,
[ActionTypes.UPDATE_SKILL_MANIFEST]: updateSkillManifest,
[ActionTypes.SYNC_ENV_SETTING]: syncEnvSetting,
- [ActionTypes.GET_ENV_SETTING]: getEnvSetting,
[ActionTypes.USER_LOGIN_SUCCESS]: setUserToken,
[ActionTypes.USER_LOGIN_FAILURE]: setUserToken, // will be invoked with token = undefined
[ActionTypes.USER_SESSION_EXPIRED]: setUserSessionExpired,
diff --git a/Composer/packages/server/__tests__/controllers/project.test.ts b/Composer/packages/server/__tests__/controllers/project.test.ts
index 9b9d1e6f83..40a8fce8df 100644
--- a/Composer/packages/server/__tests__/controllers/project.test.ts
+++ b/Composer/packages/server/__tests__/controllers/project.test.ts
@@ -272,48 +272,3 @@ describe('lu operation', () => {
expect(mockRes.status).toHaveBeenCalledWith(200);
});
});
-
-describe('setting operation', () => {
- const defaultSetting = {
- MicrosoftAppId: '',
- luis: {
- name: 'test',
- authoringRegion: 'westus',
- defaultLanguage: 'en-us',
- environment: 'composer',
- },
- qna: {
- knowledgebaseid: '',
- endpointkey: '',
- hostname: '',
- },
- downsampling: {
- maxImbalanceRatio: 10,
- maxUtteranceAllowed: 15000,
- },
- };
- let projectId = '';
- beforeEach(async () => {
- projectId = await BotProjectService.openProject(location2);
- });
- it('should update default setting', async () => {
- const mockReq = {
- params: { projectId },
- query: {},
- body: { settings: defaultSetting },
- } as Request;
-
- await ProjectController.updateDefaultSlotEnvSettings(mockReq, mockRes);
- expect(mockRes.send).toHaveBeenCalledWith('ok');
- });
-
- it('should update default setting', async () => {
- const mockReq = {
- params: { projectId },
- query: { obfuscate: false },
- } as Request;
-
- await ProjectController.getDefaultSlotEnvSettings(mockReq, mockRes);
- expect(mockRes.send).toHaveBeenCalledWith(defaultSetting);
- });
-});
diff --git a/Composer/packages/server/__tests__/models/settings/fileSettingManager.test.ts b/Composer/packages/server/__tests__/models/settings/fileSettingManager.test.ts
index b051ea1c2e..1aa933d10c 100644
--- a/Composer/packages/server/__tests__/models/settings/fileSettingManager.test.ts
+++ b/Composer/packages/server/__tests__/models/settings/fileSettingManager.test.ts
@@ -10,13 +10,13 @@ const defaultDir = Path.join(__dirname, dir);
describe('get', () => {
it('return values', async () => {
const sm = new FileSettingManager(defaultDir);
- const result = await sm.get('', false);
+ const result = await sm.get(false);
expect(result.label).toBe('default');
});
it('return obfuscated alues', async () => {
const sm = new FileSettingManager(defaultDir);
- const result = await sm.get('', true);
+ const result = await sm.get(true);
expect(result.label).toBe('*****');
expect(result.mock1).toBe('*****');
expect(result.mock2).toBe('*****');
@@ -25,14 +25,4 @@ describe('get', () => {
expect(result.mock3.mock5[0]).toBe('*****');
expect(result.mock3.mock5[1]).toBe('*****');
});
-
- it('return slot values', async () => {
- const sm = new FileSettingManager(defaultDir);
- const result = await sm.get('integration', false);
- expect(result.label).toBe('integration');
- const result2 = await sm.get('production', false);
- expect(result2.label).toBe('production');
- const result3 = await sm.get('bonus', false);
- expect(result3.label).toBe('bonus');
- });
});
diff --git a/Composer/packages/server/__tests__/models/settings/hostedSettingManager.test.ts b/Composer/packages/server/__tests__/models/settings/hostedSettingManager.test.ts
deleted file mode 100644
index 6a511c0672..0000000000
--- a/Composer/packages/server/__tests__/models/settings/hostedSettingManager.test.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT License.
-
-import { HostedSettingManager } from '../../../src/models/settings/hostedSettingManager';
-import { Path } from '../../../src/utility/path';
-
-const dir = './mocks';
-const defaultDir = Path.join(__dirname, dir);
-
-describe('get', () => {
- it('throws with invalid slot name', async () => {
- const sm = new HostedSettingManager(defaultDir);
- let threw = false;
- try {
- await sm.get('bad', true);
- } catch (x) {
- threw = true;
- }
-
- expect(threw).toBeTruthy();
- });
-});
diff --git a/Composer/packages/server/src/controllers/project.ts b/Composer/packages/server/src/controllers/project.ts
index 0489c5e3ea..e49915caac 100644
--- a/Composer/packages/server/src/controllers/project.ts
+++ b/Composer/packages/server/src/controllers/project.ts
@@ -252,48 +252,6 @@ async function removeFile(req: Request, res: Response) {
}
}
-async function getDefaultSlotEnvSettings(req: Request, res: Response) {
- const projectId = req.params.projectId;
- const user = await PluginLoader.getUserFromRequest(req);
-
- const currentProject = await BotProjectService.getProjectById(projectId, user);
- if (currentProject !== undefined) {
- try {
- const settings = await currentProject.getDefaultSlotEnvSettings(req.query.obfuscate);
- res.send(settings);
- } catch (err) {
- res.status(404).json({
- message: err.message,
- });
- }
- } else {
- res.status(404).json({
- message: 'No such bot project opened',
- });
- }
-}
-
-async function getEnvSettings(req: Request, res: Response) {
- const projectId = req.params.projectId;
- const user = await PluginLoader.getUserFromRequest(req);
-
- const currentProject = await BotProjectService.getProjectById(projectId, user);
- if (currentProject !== undefined) {
- try {
- const settings = await currentProject.getEnvSettings(req.params.slot, req.query.obfuscate);
- res.send(settings);
- } catch (err) {
- res.status(404).json({
- message: err.message,
- });
- }
- } else {
- res.status(404).json({
- message: 'No such bot project opened',
- });
- }
-}
-
async function updateSkill(req: Request, res: Response) {
const projectId = req.params.projectId;
const user = await PluginLoader.getUserFromRequest(req);
@@ -349,48 +307,6 @@ async function exportProject(req: Request, res: Response) {
});
}
-async function updateEnvSettings(req: Request, res: Response) {
- const projectId = req.params.projectId;
- const user = await PluginLoader.getUserFromRequest(req);
-
- const currentProject = await BotProjectService.getProjectById(projectId, user);
- if (currentProject !== undefined) {
- try {
- await currentProject.updateEnvSettings(req.params.slot, req.body.settings);
- res.send('ok');
- } catch (err) {
- res.status(404).json({
- message: err.message,
- });
- }
- } else {
- res.status(404).json({
- message: 'No such bot project opened',
- });
- }
-}
-
-async function updateDefaultSlotEnvSettings(req: Request, res: Response) {
- const projectId = req.params.projectId;
- const user = await PluginLoader.getUserFromRequest(req);
-
- const currentProject = await BotProjectService.getProjectById(projectId, user);
- if (currentProject !== undefined) {
- try {
- await currentProject.updateDefaultSlotEnvSettings(req.body.settings);
- res.send('ok');
- } catch (err) {
- res.status(404).json({
- message: err.message,
- });
- }
- } else {
- res.status(404).json({
- message: 'No such bot project opened',
- });
- }
-}
-
async function publishLuis(req: Request, res: Response) {
const projectId = req.params.projectId;
const user = await PluginLoader.getUserFromRequest(req);
@@ -437,10 +353,6 @@ export const ProjectController = {
updateFile,
createFile,
removeFile,
- getEnvSettings,
- getDefaultSlotEnvSettings,
- updateEnvSettings,
- updateDefaultSlotEnvSettings,
updateSkill,
getSkill,
publishLuis,
diff --git a/Composer/packages/server/src/models/bot/botProject.ts b/Composer/packages/server/src/models/bot/botProject.ts
index b348469df0..dc3e725e9a 100644
--- a/Composer/packages/server/src/models/bot/botProject.ts
+++ b/Composer/packages/server/src/models/bot/botProject.ts
@@ -87,7 +87,7 @@ export class BotProject {
public init = async () => {
this.diagnostics = [];
- this.settings = await this.getEnvSettings('', false);
+ this.settings = await this.getEnvSettings(false);
const { skillsParsed, diagnostics } = await extractSkillManifestUrl(this.settings?.skill || []);
this.skills = skillsParsed;
this.diagnostics.push(...diagnostics);
@@ -108,12 +108,11 @@ export class BotProject {
};
public getDefaultSlotEnvSettings = async (obfuscate: boolean) => {
- const defaultSlot = '';
- return await this.settingManager.get(defaultSlot, obfuscate);
+ return await this.settingManager.get(obfuscate);
};
- public getEnvSettings = async (slot: string, obfuscate: boolean) => {
- const settings = await this.settingManager.get(slot, obfuscate);
+ public getEnvSettings = async (obfuscate: boolean) => {
+ const settings = await this.settingManager.get(obfuscate);
if (settings && oauthInput().MicrosoftAppId && oauthInput().MicrosoftAppId !== OBFUSCATED_VALUE) {
settings.MicrosoftAppId = oauthInput().MicrosoftAppId;
}
@@ -124,25 +123,24 @@ export class BotProject {
};
public updateDefaultSlotEnvSettings = async (config: DialogSetting) => {
- const defaultSlot = '';
- await this.updateEnvSettings(defaultSlot, config);
+ await this.updateEnvSettings(config);
};
// create or update dialog settings
- public updateEnvSettings = async (slot: string, config: DialogSetting) => {
- await this.settingManager.set(slot, config);
+ public updateEnvSettings = async (config: DialogSetting) => {
+ await this.settingManager.set(config);
this.settings = config;
};
// update skill in settings
public updateSkill = async (config: Skill[]) => {
- const settings = await this.getEnvSettings('', false);
+ const settings = await this.getEnvSettings(false);
const { skillsParsed } = await extractSkillManifestUrl(config);
settings.skill = skillsParsed.map(({ manifestUrl, name }) => {
return { manifestUrl, name };
});
- await this.settingManager.set('', settings);
+ await this.settingManager.set(settings);
this.skills = skillsParsed;
return skillsParsed;
diff --git a/Composer/packages/server/src/models/settings/defaultSettingManager.ts b/Composer/packages/server/src/models/settings/defaultSettingManager.ts
index 393cf96fbb..a9c9fd1068 100644
--- a/Composer/packages/server/src/models/settings/defaultSettingManager.ts
+++ b/Composer/packages/server/src/models/settings/defaultSettingManager.ts
@@ -56,8 +56,8 @@ export class DefaultSettingManager extends FileSettingManager {
};
};
- public async get(slot = '', obfuscate = false): Promise {
- const result = await super.get(slot, obfuscate);
+ public async get(obfuscate = false): Promise {
+ const result = await super.get(obfuscate);
//add downsampling property for old bot
if (!result.downsampling) {
result.downsampling = this.createDefaultSettings().downsampling;
@@ -74,10 +74,8 @@ export class DefaultSettingManager extends FileSettingManager {
}
};
- public set = async (slot: string, settings: any): Promise => {
- this.validateSlot(slot);
-
- const path = this.getPath(slot);
+ public set = async (settings: any): Promise => {
+ const path = this.getPath();
const dir = Path.dirname(path);
if (!(await this.storage.exists(dir))) {
debug('Storage path does not exist. Creating directory now: %s', dir);
diff --git a/Composer/packages/server/src/models/settings/fileSettingManager.ts b/Composer/packages/server/src/models/settings/fileSettingManager.ts
index bc3c3091b3..71b637b284 100644
--- a/Composer/packages/server/src/models/settings/fileSettingManager.ts
+++ b/Composer/packages/server/src/models/settings/fileSettingManager.ts
@@ -26,23 +26,21 @@ export class FileSettingManager implements ISettingManager {
this.storage = StorageService.getStorageClient('default', user);
}
- public async get(slot = '', obfuscate = false): Promise {
- this.validateSlot(slot);
-
- const path = this.getPath(slot);
- const settings = await this._getFromStorage(path, slot);
+ public async get(obfuscate = false): Promise {
+ const path = this.getPath();
+ const settings = await this._getFromStorage(path);
return obfuscate ? this.obfuscateValues(settings) : settings;
}
- private _getFromStorage = async (path: string, slot: string) => {
+ private _getFromStorage = async (path: string) => {
if (await this.storage.exists(path)) {
const file = await this.storage.readFile(path);
return JSON.parse(file);
} else {
// does not have setting file, return default value
const defaultValue = this.createDefaultSettings();
- await this.set(slot, defaultValue);
+ await this.set(defaultValue);
return defaultValue;
}
};
@@ -51,10 +49,8 @@ export class FileSettingManager implements ISettingManager {
return {};
};
- public set = async (slot: string, settings: any): Promise => {
- this.validateSlot(slot);
-
- const path = this.getPath(slot);
+ public set = async (settings: any): Promise => {
+ const path = this.getPath();
const dir = Path.dirname(path);
if (!(await this.storage.exists(dir))) {
@@ -86,13 +82,7 @@ export class FileSettingManager implements ISettingManager {
return OBFUSCATED_VALUE;
};
- protected validateSlot = (_: string): void => {};
-
- protected getPath = (slot: string): string => {
- if (slot && slot.length > 0) {
- return Path.join(this.basePath, slot, subPath);
- } else {
- return Path.join(this.basePath, subPath);
- }
+ protected getPath = (): string => {
+ return Path.join(this.basePath, subPath);
};
}
diff --git a/Composer/packages/server/src/models/settings/hostedSettingManager.ts b/Composer/packages/server/src/models/settings/hostedSettingManager.ts
deleted file mode 100644
index 7ef9a18aa8..0000000000
--- a/Composer/packages/server/src/models/settings/hostedSettingManager.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT License.
-
-import { UserIdentity } from '@bfc/plugin-loader';
-
-import { FileSettingManager } from './fileSettingManager';
-
-export class HostedSettingManager extends FileSettingManager {
- constructor(basePath: string, user?: UserIdentity) {
- super(basePath, user);
- }
-
- protected createDefaultSettings = (): any => {
- return {
- MicrosoftAppPassword: '',
- MicrosoftAppId: '',
- luis: {
- name: '',
- authoringKey: '',
- endpointKey: '',
- authoringRegion: 'westus',
- defaultLanguage: 'en-us',
- environment: 'composer',
- },
- };
- };
-
- protected validateSlot = (slot: string): void => {
- if (slot !== 'integration' && slot !== 'production') {
- throw new Error(`Unknown slot name: ${slot}.`);
- }
- };
-}
diff --git a/Composer/packages/server/src/models/settings/interface.ts b/Composer/packages/server/src/models/settings/interface.ts
index 869b1b0f9d..d0da7c0fb2 100644
--- a/Composer/packages/server/src/models/settings/interface.ts
+++ b/Composer/packages/server/src/models/settings/interface.ts
@@ -4,7 +4,7 @@
export const OBFUSCATED_VALUE = '*****';
export interface ISettingManager {
- get(slot?: string, obfuscate?: boolean): Promise;
- set(slot: string, settings: any): Promise;
+ get(obfuscate?: boolean): Promise;
+ set(settings: any): Promise;
getFileName: () => string;
}
diff --git a/Composer/packages/server/src/router/api.ts b/Composer/packages/server/src/router/api.ts
index 536d7bf499..ea629645bc 100644
--- a/Composer/packages/server/src/router/api.ts
+++ b/Composer/packages/server/src/router/api.ts
@@ -21,9 +21,6 @@ router.delete('/projects/:projectId', ProjectController.removeProject);
router.put('/projects/:projectId/files/:name', ProjectController.updateFile);
router.delete('/projects/:projectId/files/:name', ProjectController.removeFile);
router.post('/projects/:projectId/files', ProjectController.createFile);
-router.get('/projects/:projectId/settings', ProjectController.getDefaultSlotEnvSettings); // ?obfuscate=
-router.get('/projects/:projectId/settings/:slot', ProjectController.getEnvSettings); // ?obfuscate=
-router.post('/projects/:projectId/settings/:slot', ProjectController.updateEnvSettings);
router.post('/projects/:projectId/skills', ProjectController.updateSkill);
router.post('/projects/:projectId/skill/check', ProjectController.getSkill);
router.post('/projects/:projectId/luFiles/publish', ProjectController.publishLuis);