Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1,4 +1,18 @@
#UI ENV
REACT_APP_TITLE=
REACT_APP_DESCRIPTION_CONTENT=
#MANIFEST
REACT_APP_MANIFEST_FILE=
#API CONFIG
REACT_APP_API_BASE_URL=
REACT_APP_CLIENT_ID=
REACT_APP_LOGIN_CLIENT_ID=
REACT_APP_CLIENT_SECRET=
REACT_APP_CLIENT_SECRET=
#LANGUAGES
REACT_APP_MULTI_LANGS_SUPPORT=
REACT_APP_PRELOAD_LANG=
REACT_APP_LANGS_SUPPORT=
#DEFAULT THEME
REACT_APP_DEFAULT_THEME=
#SYSTEM_EMAIL
REACT_APP_SYSTEM_EMAIL_ADDRESS=
3 changes: 2 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ FROM node:lts-fermium AS build
COPY . /web-app
WORKDIR /web-app
ENV NODE_ENV production
RUN yarn cache clean
RUN yarn install --immutable
ARG GENERATE_SOURCEMAP='false'
ENV GENERATE_SOURCEMAP $GENERATE_SOURCEMAP
Expand All @@ -13,4 +14,4 @@ COPY --from=build /web-app/build /var/www/opex/html
WORKDIR /var/www/opex/html
COPY env-map.js .
CMD cat env-map.js | envsubst > env.js && nginx -g "daemon off;"
EXPOSE 80
EXPOSE 80
8 changes: 8 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,17 @@ services:
image: ghcr.io/opexdev/web-app
environment:
- ENV=$WEB_APP_ENV
- APP_TITLE=$WEB_APP_TITLE
- DESCRIPTION=$WEB_APP_DESCRIPTION
- API_BASE_URL=$API_BASE_URL
- CLIENT_ID=$CLIENT_ID
- LOGIN_CLIENT_ID=$CLIENT_LOGIN_ID
- CLIENT_SECRET=$CLIENT_SECRET
- MULTI_LANGS_SUPPORT=$MULTI_LANGS_SUPPORT
- PRELOAD_LANG=$PRELOAD_LANG
- LANGS_SUPPORT=$LANGS_SUPPORT
- DEFAULT_THEME=$DEFAULT_THEME
- REGISTER_EMAIL_ADDRESS=$REGISTER_EMAIL_ADDRESS
networks:
- default
deploy:
Expand Down
10 changes: 9 additions & 1 deletion env-map.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
window.env = {
REACT_APP_ENV: "$ENV",
REACT_APP_TITLE: "$APP_TITLE",
REACT_APP_DESCRIPTION_CONTENT: "$DESCRIPTION",
REACT_APP_API_BASE_URL: "$API_BASE_URL",
REACT_APP_LOGIN_CLIENT_ID: "$CLIENT_ID",
REACT_APP_CLIENT_ID: "$CLIENT_ID",
REACT_APP_CLIENT_SECRET: "$CLIENT_SECRET"
REACT_APP_CLIENT_SECRET: "$CLIENT_SECRET",
REACT_APP_MULTI_LANGS_SUPPORT : "$MULTI_LANGS_SUPPORT",
REACT_APP_PRELOAD_LANG : "$PRELOAD_LANG",
REACT_APP_LANGS_SUPPORT : "$LANGS_SUPPORT",
REACT_APP_DEFAULT_THEME : "$DEFAULT_THEME",
REACT_APP_SYSTEM_EMAIL_ADDRESS : "$REGISTER_EMAIL_ADDRESS",
}
4 changes: 2 additions & 2 deletions public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1 , maximum-scale=1.0, user-scalable=no" />
<meta name="theme-color" content="#000000" />
<meta name="description" content="Open Source Exchange"/>
<meta name="description" content=%REACT_APP_DESCRIPTION_CONTENT%/>

<link rel="manifest" href="%PUBLIC_URL%/manifest.json?v=3.0.0" />

Expand Down Expand Up @@ -35,7 +35,7 @@

<script src="%PUBLIC_URL%/charting_library/charting_library.min.js"></script>
<script src="%PUBLIC_URL%/env.js"></script>
<title>Opex</title>
<title>%REACT_APP_TITLE%</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
Expand Down
3 changes: 2 additions & 1 deletion public/locales/en/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,7 @@
"registerFinished": "Registration completed successfully!",
"forgetPasswordFinished": "Password recovery request sent successfully!",
"registerFinishedGoToMail": "Please go to {{email}} inbox to complete the registration.",
"registerFinishedSpamMail": "Email sent from for.demo.purpose.only@opex.dev may be in your spam folder!",
"registerFinishedSpamMail": "Email sent from {{email}} may be in your spam folder!",
"register": "Register",
"wrongEmail": "The entered email is invalid!",
"emptyEmail": "Enter your email.",
Expand All @@ -500,6 +500,7 @@
"minCaptcha": "Captcha must be 5 characters!",
"emptyCaptcha": "Captcha required!",
"forgetPassServerError": "Error recovering password, try again!",
"UserAlreadyExists": "User with this email is already registered",
"forgetPassEmailForgetError": "Email format is incorrect!"
},
"userPage": {
Expand Down
3 changes: 2 additions & 1 deletion public/locales/fa/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,7 @@
"registerFinished": "ثبت نام با موفقیت انجام شد.",
"forgetPasswordFinished": "درخواست بازیابی رمز عبور با موفقیت ارسال شد.",
"registerFinishedGoToMail": "برای تکمیل ثبت نام به {{email}} مراجعه فرمایید.",
"registerFinishedSpamMail": "ایمیل دریافتی از آدرس for.demo.purpose.only@opex.dev ممکن است در بخش spam باشد.",
"registerFinishedSpamMail": "ایمیل دریافتی از آدرس {{email}} ممکن است در بخش spam باشد.",
"register": "ثبت نام",
"wrongEmail": "ایمیل وارد شده معتبر نیست.",
"emptyEmail": "ایمیل را وارد کنید.",
Expand All @@ -500,6 +500,7 @@
"minCaptcha": "Captcha باید ۵ کاراکتر باشد!",
"emptyCaptcha": "وارد کردن Captcha الزامی است",
"forgetPassServerError": "خطا در بازیابی رمز، دوباره تلاش کنید",
"UserAlreadyExists": "ایمل واردشده تکراری است",
"forgetPassEmailForgetError": "فرمت ایمیل صحیح نیست."
},
"userPage": {
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/i18n.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ i18n
.use(Backend)
.use(initReactI18next)
.init({
preload: ["fa"],
fallbackLng: "fa",
preload: [window.env.REACT_APP_PRELOAD_LANG],
fallbackLng: window.env.REACT_APP_PRELOAD_LANG,
debug: process.env.NODE_ENV === "development",
detection: {
order: ["localStorage"],
Expand Down
5 changes: 5 additions & 0 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ const rootReducer = combineReducers({
auth: authReducer,
});

//add custom title & meta
const meta = document.getElementsByTagName('meta')
document.title = window.env.REACT_APP_TITLE;
meta.description.content = window.env.REACT_APP_DESCRIPTION_CONTENT

/**
* Base URL of the website.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,10 @@ const RegisterForm = () => {
}}
/>
</span>
<span className={`fs-0-8 border-top-dotted pt-1 mt-1`}>{t('login.registerFinishedSpamMail')}</span>
<span className={`fs-0-8 border-top-dotted pt-1 mt-1`}><Trans
i18nKey="login.registerFinishedSpamMail"
values={{email: window.env.REACT_APP_SYSTEM_EMAIL_ADDRESS,}}
/></span>
</div>
}

Expand Down
13 changes: 9 additions & 4 deletions src/main/Browser/Pages/UserPanel/Sections/Footer/Footer.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,17 @@ const Footer = () => {
<span className={`pl-1`}>{t("footer.darkMode")}:</span>
<ToggleSwitch onchange={(e) => dispatch(setThemeInitiate(e.target.checked))} checked={isDark}/>
</div>

<div className={`row ai-center jc-between`}>
<div className={`row ai-center ${classes.languages}`}>
<span className="cursor-pointer pl-1"
onClick={() => i18n.changeLanguage("fa")}>{t("Languages.Persian")}</span>
<span className="cursor-pointer pr-1"
onClick={() => i18n.changeLanguage("en")}>{t("Languages.English")}</span>
{
window.env.REACT_APP_MULTI_LANGS_SUPPORT === 'TRUE' && <>
<span className="cursor-pointer pl-1"
onClick={() => i18n.changeLanguage("fa")}>{t("Languages.Persian")}</span>
<span className="cursor-pointer pr-1"
onClick={() => i18n.changeLanguage("en")}>{t("Languages.English")}</span>
</>
}
</div>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion src/store/reducers/globalReducer.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as actionTypes from "../actions/actionTypes";

const initialState = {
isDark: true,
isDark: window.env.REACT_APP_DEFAULT_THEME === 'DARK',
isLoading: true,
hasError: false,
marketInterval: "24h",
Expand Down