-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added article entity with block components for code, images, text and…
… whole detailed article combined; Article slice, types, selectors. Added shared Skeleton, Icon and Code ui components. Fixed Input styles and storybook & unit tests.
- Loading branch information
Showing
177 changed files
with
1,077 additions
and
130 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+4.02 KB
(100%)
.loki/reference/chrome_iphone7_entities_ProfileCard_Dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+3.93 KB
(100%)
.loki/reference/chrome_iphone7_entities_ProfileCard_Light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+1.21 KB
(110%)
.loki/reference/chrome_iphone7_entities_ProfileCard_With_Error.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_iphone7_features_LanguageSwitcher_Dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_iphone7_features_LanguageSwitcher_Light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_iphone7_features_LoginModal_Dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_iphone7_features_LoginModal_Error.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_iphone7_features_LoginModal_Light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_iphone7_features_LoginModal_Loading.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+878 Bytes
(110%)
.loki/reference/chrome_iphone7_pages_PageNotFound_Dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+904 Bytes
(110%)
.loki/reference/chrome_iphone7_pages_PageNotFound_Light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_AppLink_Primary_Dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_AppLink_Primary_Light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_AppLink_Secondary_Dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_AppLink_Secondary_Light.png
Oops, something went wrong.
Oops, something went wrong.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_Button_Clear_Dark.png
Oops, something went wrong.
Oops, something went wrong.
Binary file modified
BIN
-1 Byte
(100%)
.loki/reference/chrome_iphone7_shared_Button_Large_Size_Square_Primary.png
Oops, something went wrong.
Binary file modified
BIN
+10 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_Button_Large_Size_Square_Primary_Dark.png
Oops, something went wrong.
Binary file modified
BIN
+13 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_Button_Large_Size_Square_Secondary.png
Oops, something went wrong.
Binary file modified
BIN
+5 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_Button_Large_Size_Square_Secondary_Dark.png
Oops, something went wrong.
Binary file modified
BIN
+3 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_Button_Medium_Size_Square_Primary.png
Oops, something went wrong.
Binary file modified
BIN
+5 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_Button_Medium_Size_Square_Primary_Dark.png
Oops, something went wrong.
Binary file modified
BIN
-2 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_Button_Medium_Size_Square_Secondary.png
Oops, something went wrong.
Binary file modified
BIN
-2 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_Button_Medium_Size_Square_Secondary_Dark.png
Oops, something went wrong.
Oops, something went wrong.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_Button_Outlined_Dark.png
Oops, something went wrong.
Oops, something went wrong.
Binary file modified
BIN
+150 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_Button_Small_Size_Square_Primary.png
Oops, something went wrong.
Binary file modified
BIN
+191 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_Button_Small_Size_Square_Primary_Dark.png
Oops, something went wrong.
Binary file modified
BIN
+203 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_Button_Small_Size_Square_Secondary.png
Oops, something went wrong.
Binary file modified
BIN
+181 Bytes
(100%)
.loki/reference/chrome_iphone7_shared_Button_Small_Size_Square_Secondary_Dark.png
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Binary file modified
BIN
-1.86 KB
(97%)
.loki/reference/chrome_laptop_entities_ProfileCard_Light.png
Oops, something went wrong.
Binary file modified
BIN
+119 Bytes
(100%)
.loki/reference/chrome_laptop_entities_ProfileCard_With_Error.png
Oops, something went wrong.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_laptop_features_LanguageSwitcher_Dark.png
Oops, something went wrong.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_laptop_features_LanguageSwitcher_Light.png
Oops, something went wrong.
Oops, something went wrong.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_laptop_features_LoginModal_Error.png
Oops, something went wrong.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_laptop_features_LoginModal_Light.png
Oops, something went wrong.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_laptop_features_LoginModal_Loading.png
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Binary file modified
BIN
+72 Bytes
(100%)
.loki/reference/chrome_laptop_pages_PageNotFound_Light.png
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_laptop_shared_AppLink_Primary_Dark.png
Oops, something went wrong.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_laptop_shared_AppLink_Primary_Light.png
Oops, something went wrong.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_laptop_shared_AppLink_Secondary_Dark.png
Oops, something went wrong.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_laptop_shared_AppLink_Secondary_Light.png
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Binary file modified
BIN
+1 Byte
(100%)
.loki/reference/chrome_laptop_shared_Button_Large_Size_Square_Primary.png
Oops, something went wrong.
Binary file modified
BIN
-11 Bytes
(100%)
.loki/reference/chrome_laptop_shared_Button_Large_Size_Square_Primary_Dark.png
Oops, something went wrong.
Binary file modified
BIN
+8 Bytes
(100%)
.loki/reference/chrome_laptop_shared_Button_Large_Size_Square_Secondary.png
Oops, something went wrong.
Binary file modified
BIN
+2 Bytes
(100%)
.loki/reference/chrome_laptop_shared_Button_Large_Size_Square_Secondary_Dark.png
Oops, something went wrong.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_laptop_shared_Button_Medium_Size_Square_Primary.png
Oops, something went wrong.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_laptop_shared_Button_Medium_Size_Square_Primary_Dark.png
Oops, something went wrong.
Binary file modified
BIN
-2 Bytes
(100%)
.loki/reference/chrome_laptop_shared_Button_Medium_Size_Square_Secondary.png
Oops, something went wrong.
Binary file modified
BIN
+1 Byte
(100%)
.loki/reference/chrome_laptop_shared_Button_Medium_Size_Square_Secondary_Dark.png
Oops, something went wrong.
Oops, something went wrong.
Binary file modified
BIN
+0 Bytes
(100%)
.loki/reference/chrome_laptop_shared_Button_Outlined_Dark.png
Oops, something went wrong.
Oops, something went wrong.
Binary file modified
BIN
-40 Bytes
(99%)
.loki/reference/chrome_laptop_shared_Button_Small_Size_Square_Primary.png
Oops, something went wrong.
Binary file modified
BIN
-49 Bytes
(99%)
.loki/reference/chrome_laptop_shared_Button_Small_Size_Square_Primary_Dark.png
Oops, something went wrong.
Binary file modified
BIN
-51 Bytes
(99%)
.loki/reference/chrome_laptop_shared_Button_Small_Size_Square_Secondary.png
Oops, something went wrong.
Binary file modified
BIN
-38 Bytes
(99%)
.loki/reference/chrome_laptop_shared_Button_Small_Size_Square_Secondary_Dark.png
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"Скопировано!": "", | ||
"Статья не найдена": "" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"Статья не найдена": "Article not found", | ||
"Скопировано!": "Copied!" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"Статья не найдена": "Статья не найдена", | ||
"Скопировано!": "Скопировано!" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
export { ArticleDetails } from './ui/ArticleDetails/ArticleDetails'; | ||
export type { Article } from './model/types/article'; | ||
export { ArticleDetailsSchema } from './model/types/articleDetailsSchema'; | ||
export { ArticleImageBlockComponent } from './ui/ArticleImageBlockComponent/ArticleImageBlockComponent'; | ||
export { ArticleTextBlockComponent } from './ui/ArticleTextBlockComponent/ArticleTextBlockComponent'; | ||
export { ArticleCodeBlockComponent } from './ui/ArticleCodeBlockComponent/ArticleCodeBlockComponent'; |
60 changes: 60 additions & 0 deletions
60
src/entities/Article/model/selectors/articleDetailsSelectors.test.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
import { StateSchema } from 'app/providers/StoreProvider'; | ||
import { getArticleDetailsData, getArticleDetailsError, getArticleDetailsIsLoading } from './articleDetailsSelectors'; | ||
|
||
describe('getArticleDetailsData.test', () => { | ||
test('should return article data', () => { | ||
const state: DeepPartial<StateSchema> = { | ||
articleDetails: { | ||
data: { | ||
title: 'Title', | ||
blocks: [], | ||
views: 20, | ||
id: '1', | ||
}, | ||
}, | ||
}; | ||
expect(getArticleDetailsData(state as StateSchema)).toEqual({ | ||
title: 'Title', | ||
blocks: [], | ||
views: 20, | ||
id: '1', | ||
}); | ||
}); | ||
|
||
test('should return undefined from empty state', () => { | ||
const state: DeepPartial<StateSchema> = {}; | ||
expect(getArticleDetailsData(state as StateSchema)).toEqual(undefined); | ||
}); | ||
}); | ||
|
||
describe('getArticleDetailsError.test', () => { | ||
test('should return article error', () => { | ||
const state: DeepPartial<StateSchema> = { | ||
articleDetails: { | ||
error: 'error', | ||
}, | ||
}; | ||
expect(getArticleDetailsError(state as StateSchema)).toEqual('error'); | ||
}); | ||
|
||
test('should return undefined from empty error', () => { | ||
const state: DeepPartial<StateSchema> = {}; | ||
expect(getArticleDetailsError(state as StateSchema)).toEqual(undefined); | ||
}); | ||
}); | ||
|
||
describe('getArticleDetailsIsLoading.test', () => { | ||
test('should return article data', () => { | ||
const state: DeepPartial<StateSchema> = { | ||
articleDetails: { | ||
isLoading: true, | ||
}, | ||
}; | ||
expect(getArticleDetailsIsLoading(state as StateSchema)).toEqual(true); | ||
}); | ||
|
||
test('should return undefined from empty state', () => { | ||
const state: DeepPartial<StateSchema> = {}; | ||
expect(getArticleDetailsIsLoading(state as StateSchema)).toEqual(undefined); | ||
}); | ||
}); |
5 changes: 5 additions & 0 deletions
5
src/entities/Article/model/selectors/articleDetailsSelectors.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import { StateSchema } from 'app/providers/StoreProvider'; | ||
|
||
export const getArticleDetailsData = (state: StateSchema) => state.articleDetails?.data; | ||
export const getArticleDetailsIsLoading = (state: StateSchema) => state.articleDetails?.isLoading; | ||
export const getArticleDetailsError = (state: StateSchema) => state.articleDetails?.error; |
27 changes: 27 additions & 0 deletions
27
src/entities/Article/model/services/fetchArticleById/fetchArticleById.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
import { createAsyncThunk } from '@reduxjs/toolkit'; | ||
import { ThunkConfig } from 'app/providers/StoreProvider'; | ||
import { Article } from '../../types/article'; | ||
|
||
export const fetchArticleById = createAsyncThunk< | ||
Article, | ||
string, | ||
ThunkConfig<string> | ||
>( | ||
'articleDetails/fetchArticleById', | ||
async (articleId, thunkApi) => { | ||
const { extra, rejectWithValue } = thunkApi; | ||
|
||
try { | ||
const response = await extra.api.get<Article>(`/articles/${articleId}`); | ||
|
||
if (!response.data) { | ||
throw new Error(); | ||
} | ||
|
||
return response.data; | ||
} catch (e) { | ||
console.log(e); | ||
return rejectWithValue('error'); | ||
} | ||
}, | ||
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
import { createSlice, PayloadAction } from '@reduxjs/toolkit'; | ||
import { fetchArticleById } from 'entities/Article/model/services/fetchArticleById/fetchArticleById'; | ||
import { Article } from '../types/article'; | ||
import { ArticleDetailsSchema } from '../types/articleDetailsSchema'; | ||
|
||
const initialState: ArticleDetailsSchema = { | ||
isLoading: false, | ||
error: undefined, | ||
data: undefined, | ||
}; | ||
|
||
export const articleDetailsSlice = createSlice({ | ||
name: 'articleDetails', | ||
initialState, | ||
reducers: {}, | ||
extraReducers: (builder) => { | ||
builder | ||
.addCase(fetchArticleById.pending, (state) => { | ||
state.error = undefined; | ||
state.isLoading = true; | ||
}) | ||
.addCase(fetchArticleById.fulfilled, ( | ||
state, | ||
action: PayloadAction<Article>, | ||
) => { | ||
state.isLoading = false; | ||
state.data = action.payload; | ||
}) | ||
.addCase(fetchArticleById.rejected, (state, action) => { | ||
state.isLoading = false; | ||
state.error = action.payload; | ||
}); | ||
}, | ||
}); | ||
|
||
// Action creators are generated for each case reducer function | ||
export const { actions: articleDetailsActions } = articleDetailsSlice; | ||
export const { reducer: articleDetailsReducer } = articleDetailsSlice; |
Oops, something went wrong.
a24a471
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Successfully deployed to the following URLs:
social-media-ndg8 – ./
social-media-ndg8-git-master-yaazzik.vercel.app
social-media-ndg8.vercel.app
xn--90aeezcbq.xn--p1ai
social-media-ndg8-yaazzik.vercel.app
www.xn--90aeezcbq.xn--p1ai