Skip to content

Commit 21c7da7

Browse files
authored
Merge pull request #1175 from lowcoder-org/concurrency-user-display
Concurrency user display
2 parents 750e6ca + 975bcf8 commit 21c7da7

20 files changed

+347
-44
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@ application-dev-localhost.yaml
1717
.vscode/launch.json
1818
server/api-service/lowcoder-server/src/main/resources/application-local-dev.yaml
1919
translations/locales/node_modules/
20+
.vscode/settings.json

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44
"titleBar.activeBackground": "#3B431A",
55
"titleBar.activeForeground": "#F9FAF2"
66
},
7-
"java.debug.settings.onBuildFailureProceed": true
7+
"java.debug.settings.onBuildFailureProceed": true,
8+
"java.configuration.updateBuildConfiguration": "automatic"
89
}

client/packages/lowcoder/src/api/applicationApi.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
PublishApplicationPayload,
1010
RecycleApplicationPayload,
1111
RestoreApplicationPayload,
12+
SetAppEditingStatePayload,
1213
UpdateAppPermissionPayload,
1314
} from "redux/reduxActions/applicationActions";
1415
import { ApiResponse, GenericApiResponse } from "./apiResponses";
@@ -96,7 +97,7 @@ class ApplicationApi extends Api {
9697
static publicToAllURL = (applicationId: string) => `/applications/${applicationId}/public-to-all`;
9798
static publicToMarketplaceURL = (applicationId: string) => `/applications/${applicationId}/public-to-marketplace`;
9899
static getMarketplaceAppURL = (applicationId: string) => `/applications/${applicationId}/view_marketplace`;
99-
100+
static setAppEditingStateURL = (applicationId: string) => `/applications/editState/${applicationId}`;
100101

101102
static fetchHomeData(request: HomeDataPayload): AxiosPromise<HomeDataResponse> {
102103
return Api.get(ApplicationApi.fetchHomeDataURL, request);
@@ -232,6 +233,13 @@ class ApplicationApi extends Api {
232233
static getMarketplaceApp(appId: string) {
233234
return Api.get(ApplicationApi.getMarketplaceAppURL(appId));
234235
}
236+
237+
static setAppEditingState(request: SetAppEditingStatePayload): AxiosPromise<ApplicationResp> {
238+
const { applicationId, editingFinished } = request;
239+
return Api.put(ApplicationApi.setAppEditingStateURL(applicationId), {
240+
editingFinished,
241+
});
242+
}
235243
}
236244

237245
export default ApplicationApi;

client/packages/lowcoder/src/constants/applicationConstants.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ export interface ApplicationMeta {
9191
folder: false;
9292
isLocalMarketplace?: boolean;
9393
applicationStatus: "NORMAL" | "RECYCLED" | "DELETED";
94+
editingUserId: string | null;
95+
lastEditedAt: number;
9496
}
9597

9698
export interface FolderMeta {

client/packages/lowcoder/src/constants/reduxActionConstants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ export const ReduxActionTypes = {
144144
FETCH_ALL_MODULES_SUCCESS: "FETCH_ALL_MODULES_SUCCESS",
145145
FETCH_ALL_MARKETPLACE_APPS: "FETCH_ALL_MARKETPLACE_APPS",
146146
FETCH_ALL_MARKETPLACE_APPS_SUCCESS: "FETCH_ALL_MARKETPLACE_APPS_SUCCESS",
147+
SET_APP_EDITING_STATE: "SET_APP_EDITING_STATE",
147148

148149
/* user profile */
149150
SET_USER_PROFILE_SETTING_MODAL_VISIBLE: "SET_USER_PROFILE_SETTING_MODAL_VISIBLE",

client/packages/lowcoder/src/i18n/locales/de.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2986,7 +2986,13 @@ export const de = {
29862986
"editorMode_both": "Beide",
29872987
"editorMode_layout_tooltip": "Passen Sie im rechten Fenster das Erscheinungsbild und Layout der Komponente an. Passen Sie Aussehen, Stil und Animationen an.",
29882988
"editorMode_logic_tooltip": "Richten Sie im rechten Fenster ein, wie Ihre Komponente funktioniert und interagiert. Verwalten Sie den Inhalt und das interaktive Verhalten.",
2989-
},
2989+
"AppEditingBlocked": "App-Bearbeitung blockiert für:",
2990+
"AppEditingBlockedHint": "Änderungen werden nicht gespeichert, während ein anderer Benutzer diese App bearbeitet.",
2991+
"AppEditingBlockedMessage": "Bitte warten Sie, bevor Sie den Bearbeitungsstatus der App überprüfen.",
2992+
"AppEditingBlockedCheckStatus": "App-Status prüfen",
2993+
"AppEditingBlockedSomeone": "Jemand",
2994+
"AppEditingBlockedMessageSnipped": "bearbeitet diese App",
2995+
},
29902996
"userAuth": {
29912997
...en.userAuth,
29922998

client/packages/lowcoder/src/i18n/locales/en.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2922,7 +2922,13 @@ export const en = {
29222922
"editorMode_logic": "Logic",
29232923
"editorMode_both": "Both",
29242924
"editorMode_layout_tooltip": "Customise the component's appearance and layout, in the right window. Adjust how it looks, styles, and animates.",
2925-
"editorMode_logic_tooltip": "Set up how your component works and interacts, in the right window. Manage its content and interactive behaviours."
2925+
"editorMode_logic_tooltip": "Set up how your component works and interacts, in the right window. Manage its content and interactive behaviours.",
2926+
"AppEditingBlocked": "App Editing Blocked for:",
2927+
"AppEditingBlockedHint": "Changes will not be saved while another user is editing this app.",
2928+
"AppEditingBlockedMessage": "Please wait before check the editing status of the App.",
2929+
"AppEditingBlockedCheckStatus": "Check App Status",
2930+
"AppEditingBlockedSomeone": "Someone",
2931+
"AppEditingBlockedMessageSnipped": "is editing this app",
29262932
},
29272933
"userAuth": {
29282934
"registerByEmail": "Sign Up",

client/packages/lowcoder/src/i18n/locales/es.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2986,6 +2986,12 @@ export const es = {
29862986
"editorMode_both": "Ambos",
29872987
"editorMode_layout_tooltip": "Personalice la apariencia y el diseño del componente en la ventana derecha. Ajusta su aspecto, estilo y animación.",
29882988
"editorMode_logic_tooltip": "Configure el funcionamiento y la interacción de su componente, en la ventana adecuada. Gestione su contenido y sus comportamientos interactivos.",
2989+
"AppEditingBlocked": "Edición de la App bloqueada para:",
2990+
"AppEditingBlockedHint": "Los cambios no se guardarán mientras otro usuario esté editando esta aplicación.",
2991+
"AppEditingBlockedMessage": "Por favor, espere antes de verificar el estado de edición de la aplicación.",
2992+
"AppEditingBlockedCheckStatus": "Verificar estado de la aplicación",
2993+
"AppEditingBlockedSomeone": "Alguien",
2994+
"AppEditingBlockedMessageSnipped": "está editando esta aplicación",
29892995
},
29902996
"userAuth": {
29912997
...en.userAuth,

client/packages/lowcoder/src/i18n/locales/it.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2986,6 +2986,12 @@ export const it = {
29862986
"editorMode_both": "Entrambi",
29872987
"editorMode_layout_tooltip": "Personalizzare l'aspetto e il layout del componente, nella finestra di destra. Regolate l'aspetto, gli stili e le animazioni.",
29882988
"editorMode_logic_tooltip": "Impostate il funzionamento e l'interazione del vostro componente, nella finestra giusta. Gestite il suo contenuto e i suoi comportamenti interattivi.",
2989+
"AppEditingBlocked": "Modifica dell'app bloccata per:",
2990+
"AppEditingBlockedHint": "Le modifiche non verranno salvate mentre un altro utente sta modificando questa app.",
2991+
"AppEditingBlockedMessage": "Attendere prima di controllare lo stato di modifica dell'app.",
2992+
"AppEditingBlockedCheckStatus": "Controlla lo stato dell'app",
2993+
"AppEditingBlockedSomeone": "Qualcuno",
2994+
"AppEditingBlockedMessageSnipped": "sta modificando questa app",
29892995
},
29902996
"userAuth": {
29912997
...en.userAuth,

client/packages/lowcoder/src/i18n/locales/pt.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2986,6 +2986,12 @@ export const pt = {
29862986
"editorMode_both": "Ambos",
29872987
"editorMode_layout_tooltip": "Personalize a aparência e o layout do componente, na janela direita. Ajuste sua aparência, estilo e animação.",
29882988
"editorMode_logic_tooltip": "Configure como seu componente funciona e interage, na janela direita. Gerencie seu conteúdo e comportamentos interativos.",
2989+
"AppEditingBlocked": "Edição do aplicativo bloqueada para:",
2990+
"AppEditingBlockedHint": "As alterações não serão salvas enquanto outro usuário estiver editando este aplicativo.",
2991+
"AppEditingBlockedMessage": "Por favor, aguarde antes de verificar o status de edição do aplicativo.",
2992+
"AppEditingBlockedCheckStatus": "Verificar status do aplicativo",
2993+
"AppEditingBlockedSomeone": "Alguém",
2994+
"AppEditingBlockedMessageSnipped": "está editando este aplicativo",
29892995
},
29902996
"userAuth": {
29912997
...en.userAuth,

client/packages/lowcoder/src/i18n/locales/ru.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2986,6 +2986,12 @@ export const ru = {
29862986
"editorMode_both": "Оба",
29872987
"editorMode_layout_tooltip": "Настройте внешний вид и расположение компонента в правом окне. Настройте его внешний вид, стили и анимацию.",
29882988
"editorMode_logic_tooltip": "Настройте работу и взаимодействие вашего компонента в нужном окне. Управляйте его содержимым и интерактивным поведением.",
2989+
"AppEditingBlocked": "Редактирование приложения заблокировано для:",
2990+
"AppEditingBlockedHint": "Изменения не будут сохранены, пока другой пользователь редактирует это приложение.",
2991+
"AppEditingBlockedMessage": "Пожалуйста, подождите, прежде чем проверить статус редактирования приложения.",
2992+
"AppEditingBlockedCheckStatus": "Проверить статус приложения",
2993+
"AppEditingBlockedSomeone": "Кто-то",
2994+
"AppEditingBlockedMessageSnipped": "редактирует это приложение",
29892995
},
29902996
"userAuth": {
29912997
...en.userAuth,

client/packages/lowcoder/src/i18n/locales/zh.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2352,7 +2352,13 @@ export const zh: typeof en = {
23522352
editorMode_logic: "应用程序逻辑",
23532353
editorMode_both: "两者",
23542354
editorMode_layout_tooltip: "在右侧窗口中自定义组件的外观和布局。调整它的外观、样式和动画。",
2355-
editorMode_logic_tooltip: "在右侧窗口中设置组件的工作和交互方式。管理其内容和交互行为。"
2355+
editorMode_logic_tooltip: "在右侧窗口中设置组件的工作和交互方式。管理其内容和交互行为。",
2356+
"AppEditingBlocked": "应用编辑已被阻止:",
2357+
"AppEditingBlockedHint": "在其他用户编辑此应用时,无法保存更改。",
2358+
"AppEditingBlockedMessage": "请稍候再检查应用的编辑状态。",
2359+
"AppEditingBlockedCheckStatus": "检查应用状态",
2360+
"AppEditingBlockedSomeone": "某人",
2361+
"AppEditingBlockedMessageSnipped": "正在编辑此应用",
23562362
},
23572363
userAuth: {
23582364
...en.userAuth,

0 commit comments

Comments
 (0)