aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.dockerignore44
-rw-r--r--.github/workflows/back-ci.yaml16
-rw-r--r--.github/workflows/front-ci.yaml12
-rw-r--r--.vscode/settings.json8
-rw-r--r--BackEnd/Directory.Build.props (renamed from Directory.Build.props)0
-rw-r--r--BackEnd/Nuget.Config (renamed from Nuget.Config)0
-rw-r--r--BackEnd/Timeline.ErrorCodes.CodeGenerator/Program.cs (renamed from Timeline.ErrorCodes.CodeGenerator/Program.cs)0
-rw-r--r--BackEnd/Timeline.ErrorCodes.CodeGenerator/Timeline.ErrorCodes.CodeGenerator.csproj (renamed from Timeline.ErrorCodes.CodeGenerator/Timeline.ErrorCodes.CodeGenerator.csproj)0
-rw-r--r--BackEnd/Timeline.ErrorCodes.CodeGenerator/packages.lock.json (renamed from Timeline.ErrorCodes.CodeGenerator/packages.lock.json)0
-rw-r--r--BackEnd/Timeline.ErrorCodes/ErrorCodes.cs (renamed from Timeline.ErrorCodes/ErrorCodes.cs)0
-rw-r--r--BackEnd/Timeline.ErrorCodes/Timeline.ErrorCodes.csproj (renamed from Timeline.ErrorCodes/Timeline.ErrorCodes.csproj)0
-rw-r--r--BackEnd/Timeline.ErrorCodes/packages.lock.json (renamed from Timeline.ErrorCodes/packages.lock.json)0
-rw-r--r--BackEnd/Timeline.Tests/ErrorCodeTest.cs (renamed from Timeline.Tests/ErrorCodeTest.cs)0
-rw-r--r--BackEnd/Timeline.Tests/GlobalSuppressions.cs (renamed from Timeline.Tests/GlobalSuppressions.cs)0
-rw-r--r--BackEnd/Timeline.Tests/Helpers/AsyncFunctionAssertionsExtensions.cs (renamed from Timeline.Tests/Helpers/AsyncFunctionAssertionsExtensions.cs)0
-rw-r--r--BackEnd/Timeline.Tests/Helpers/CacheTestHelper.cs (renamed from Timeline.Tests/Helpers/CacheTestHelper.cs)0
-rw-r--r--BackEnd/Timeline.Tests/Helpers/HttpClientExtensions.cs (renamed from Timeline.Tests/Helpers/HttpClientExtensions.cs)0
-rw-r--r--BackEnd/Timeline.Tests/Helpers/HttpResponseExtensions.cs (renamed from Timeline.Tests/Helpers/HttpResponseExtensions.cs)0
-rw-r--r--BackEnd/Timeline.Tests/Helpers/ImageHelper.cs (renamed from Timeline.Tests/Helpers/ImageHelper.cs)0
-rw-r--r--BackEnd/Timeline.Tests/Helpers/ParameterInfoAssertions.cs (renamed from Timeline.Tests/Helpers/ParameterInfoAssertions.cs)0
-rw-r--r--BackEnd/Timeline.Tests/Helpers/ReflectionHelper.cs (renamed from Timeline.Tests/Helpers/ReflectionHelper.cs)0
-rw-r--r--BackEnd/Timeline.Tests/Helpers/ResponseAssertions.cs (renamed from Timeline.Tests/Helpers/ResponseAssertions.cs)0
-rw-r--r--BackEnd/Timeline.Tests/Helpers/TestApplication.cs (renamed from Timeline.Tests/Helpers/TestApplication.cs)0
-rw-r--r--BackEnd/Timeline.Tests/Helpers/TestClock.cs (renamed from Timeline.Tests/Helpers/TestClock.cs)0
-rw-r--r--BackEnd/Timeline.Tests/Helpers/TestDatabase.cs (renamed from Timeline.Tests/Helpers/TestDatabase.cs)0
-rw-r--r--BackEnd/Timeline.Tests/IntegratedTests/AuthorizationTest.cs (renamed from Timeline.Tests/IntegratedTests/AuthorizationTest.cs)0
-rw-r--r--BackEnd/Timeline.Tests/IntegratedTests/FrontEndTest.cs (renamed from Timeline.Tests/IntegratedTests/FrontEndTest.cs)0
-rw-r--r--BackEnd/Timeline.Tests/IntegratedTests/IntegratedTestBase.cs (renamed from Timeline.Tests/IntegratedTests/IntegratedTestBase.cs)0
-rw-r--r--BackEnd/Timeline.Tests/IntegratedTests/TimelineTest.cs (renamed from Timeline.Tests/IntegratedTests/TimelineTest.cs)0
-rw-r--r--BackEnd/Timeline.Tests/IntegratedTests/TokenTest.cs (renamed from Timeline.Tests/IntegratedTests/TokenTest.cs)0
-rw-r--r--BackEnd/Timeline.Tests/IntegratedTests/UnknownEndpointTest.cs (renamed from Timeline.Tests/IntegratedTests/UnknownEndpointTest.cs)0
-rw-r--r--BackEnd/Timeline.Tests/IntegratedTests/UserAvatarTest.cs (renamed from Timeline.Tests/IntegratedTests/UserAvatarTest.cs)0
-rw-r--r--BackEnd/Timeline.Tests/IntegratedTests/UserTest.cs (renamed from Timeline.Tests/IntegratedTests/UserTest.cs)0
-rw-r--r--BackEnd/Timeline.Tests/PasswordGenerator.cs (renamed from Timeline.Tests/PasswordGenerator.cs)0
-rw-r--r--BackEnd/Timeline.Tests/Properties/launchSettings.json (renamed from Timeline.Tests/Properties/launchSettings.json)0
-rw-r--r--BackEnd/Timeline.Tests/Services/TimelineServiceTest.cs (renamed from Timeline.Tests/Services/TimelineServiceTest.cs)0
-rw-r--r--BackEnd/Timeline.Tests/Timeline.Tests.csproj (renamed from Timeline.Tests/Timeline.Tests.csproj)0
-rw-r--r--BackEnd/Timeline.Tests/UsernameValidatorUnitTest.cs (renamed from Timeline.Tests/UsernameValidatorUnitTest.cs)0
-rw-r--r--BackEnd/Timeline.Tests/coverletArgs.runsettings (renamed from Timeline.Tests/coverletArgs.runsettings)0
-rw-r--r--BackEnd/Timeline.Tests/packages.lock.json (renamed from Timeline.Tests/packages.lock.json)0
-rw-r--r--BackEnd/Timeline.sln (renamed from Timeline.sln)0
-rw-r--r--BackEnd/Timeline/Auth/Attribute.cs (renamed from Timeline/Auth/Attribute.cs)0
-rw-r--r--BackEnd/Timeline/Auth/MyAuthenticationHandler.cs (renamed from Timeline/Auth/MyAuthenticationHandler.cs)0
-rw-r--r--BackEnd/Timeline/Auth/PrincipalExtensions.cs (renamed from Timeline/Auth/PrincipalExtensions.cs)0
-rw-r--r--BackEnd/Timeline/Configs/ApplicationConfiguration.cs (renamed from Timeline/Configs/ApplicationConfiguration.cs)0
-rw-r--r--BackEnd/Timeline/Configs/JwtConfiguration.cs (renamed from Timeline/Configs/JwtConfiguration.cs)0
-rw-r--r--BackEnd/Timeline/Controllers/ControllerAuthExtensions.cs (renamed from Timeline/Controllers/ControllerAuthExtensions.cs)0
-rw-r--r--BackEnd/Timeline/Controllers/Testing/TestingAuthController.cs (renamed from Timeline/Controllers/Testing/TestingAuthController.cs)0
-rw-r--r--BackEnd/Timeline/Controllers/TimelineController.cs (renamed from Timeline/Controllers/TimelineController.cs)0
-rw-r--r--BackEnd/Timeline/Controllers/TokenController.cs (renamed from Timeline/Controllers/TokenController.cs)0
-rw-r--r--BackEnd/Timeline/Controllers/UserAvatarController.cs (renamed from Timeline/Controllers/UserAvatarController.cs)0
-rw-r--r--BackEnd/Timeline/Controllers/UserController.cs (renamed from Timeline/Controllers/UserController.cs)0
-rw-r--r--BackEnd/Timeline/Entities/DataEntity.cs (renamed from Timeline/Entities/DataEntity.cs)0
-rw-r--r--BackEnd/Timeline/Entities/DatabaseContext.cs (renamed from Timeline/Entities/DatabaseContext.cs)0
-rw-r--r--BackEnd/Timeline/Entities/JwtTokenEntity.cs (renamed from Timeline/Entities/JwtTokenEntity.cs)0
-rw-r--r--BackEnd/Timeline/Entities/TimelineEntity.cs (renamed from Timeline/Entities/TimelineEntity.cs)0
-rw-r--r--BackEnd/Timeline/Entities/TimelineMemberEntity.cs (renamed from Timeline/Entities/TimelineMemberEntity.cs)0
-rw-r--r--BackEnd/Timeline/Entities/TimelinePostEntity.cs (renamed from Timeline/Entities/TimelinePostEntity.cs)0
-rw-r--r--BackEnd/Timeline/Entities/UserAvatarEntity.cs (renamed from Timeline/Entities/UserAvatarEntity.cs)0
-rw-r--r--BackEnd/Timeline/Entities/UserEntity.cs (renamed from Timeline/Entities/UserEntity.cs)0
-rw-r--r--BackEnd/Timeline/Entities/UtcDateAnnotation.cs (renamed from Timeline/Entities/UtcDateAnnotation.cs)0
-rw-r--r--BackEnd/Timeline/Filters/Header.cs (renamed from Timeline/Filters/Header.cs)0
-rw-r--r--BackEnd/Timeline/Filters/Timeline.cs (renamed from Timeline/Filters/Timeline.cs)0
-rw-r--r--BackEnd/Timeline/Formatters/BytesInputFormatter.cs (renamed from Timeline/Formatters/BytesInputFormatter.cs)0
-rw-r--r--BackEnd/Timeline/Formatters/StringInputFormatter.cs (renamed from Timeline/Formatters/StringInputFormatter.cs)0
-rw-r--r--BackEnd/Timeline/GlobalSuppressions.cs (renamed from Timeline/GlobalSuppressions.cs)0
-rw-r--r--BackEnd/Timeline/Helpers/DataCacheHelper.cs (renamed from Timeline/Helpers/DataCacheHelper.cs)0
-rw-r--r--BackEnd/Timeline/Helpers/DateTimeExtensions.cs (renamed from Timeline/Helpers/DateTimeExtensions.cs)0
-rw-r--r--BackEnd/Timeline/Helpers/InvalidModelResponseFactory.cs (renamed from Timeline/Helpers/InvalidModelResponseFactory.cs)0
-rw-r--r--BackEnd/Timeline/Helpers/LanguageHelper.cs (renamed from Timeline/Helpers/LanguageHelper.cs)0
-rw-r--r--BackEnd/Timeline/Helpers/Log.cs (renamed from Timeline/Helpers/Log.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200105150407_Initialize.Designer.cs (renamed from Timeline/Migrations/20200105150407_Initialize.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200105150407_Initialize.cs (renamed from Timeline/Migrations/20200105150407_Initialize.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200131100517_RefactorUser.Designer.cs (renamed from Timeline/Migrations/20200131100517_RefactorUser.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200131100517_RefactorUser.cs (renamed from Timeline/Migrations/20200131100517_RefactorUser.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200221064341_AddJwtToken.Designer.cs (renamed from Timeline/Migrations/20200221064341_AddJwtToken.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200221064341_AddJwtToken.cs (renamed from Timeline/Migrations/20200221064341_AddJwtToken.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200229103848_AddPostLocalId.Designer.cs (renamed from Timeline/Migrations/20200229103848_AddPostLocalId.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200229103848_AddPostLocalId.cs (renamed from Timeline/Migrations/20200229103848_AddPostLocalId.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200306110049_AddDataTable.Designer.cs (renamed from Timeline/Migrations/20200306110049_AddDataTable.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200306110049_AddDataTable.cs (renamed from Timeline/Migrations/20200306110049_AddDataTable.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200306111553_DropUserDetails.Designer.cs (renamed from Timeline/Migrations/20200306111553_DropUserDetails.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200306111553_DropUserDetails.cs (renamed from Timeline/Migrations/20200306111553_DropUserDetails.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200312112552_AddImagePost.Designer.cs (renamed from Timeline/Migrations/20200312112552_AddImagePost.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200312112552_AddImagePost.cs (renamed from Timeline/Migrations/20200312112552_AddImagePost.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200614061237_AddTimelineUniqueId.Designer.cs (renamed from Timeline/Migrations/20200614061237_AddTimelineUniqueId.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200614061237_AddTimelineUniqueId.cs (renamed from Timeline/Migrations/20200614061237_AddTimelineUniqueId.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200618064936_TimelineAddModifiedTime.Designer.cs (renamed from Timeline/Migrations/20200618064936_TimelineAddModifiedTime.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200618064936_TimelineAddModifiedTime.cs (renamed from Timeline/Migrations/20200618064936_TimelineAddModifiedTime.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200808071611_UserAddUniqueId.Designer.cs (renamed from Timeline/Migrations/20200808071611_UserAddUniqueId.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200808071611_UserAddUniqueId.cs (renamed from Timeline/Migrations/20200808071611_UserAddUniqueId.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200810155908_AddTimesToUser.Designer.cs (renamed from Timeline/Migrations/20200810155908_AddTimesToUser.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200810155908_AddTimesToUser.cs (renamed from Timeline/Migrations/20200810155908_AddTimesToUser.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200810170533_MakePostAuthorOptional.Designer.cs (renamed from Timeline/Migrations/20200810170533_MakePostAuthorOptional.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200810170533_MakePostAuthorOptional.cs (renamed from Timeline/Migrations/20200810170533_MakePostAuthorOptional.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200811080808_ChangeDateTimeOffsetToDateTime.Designer.cs (renamed from Timeline/Migrations/20200811080808_ChangeDateTimeOffsetToDateTime.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200811080808_ChangeDateTimeOffsetToDateTime.cs (renamed from Timeline/Migrations/20200811080808_ChangeDateTimeOffsetToDateTime.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200826164553_TimelineAddTitle.Designer.cs (renamed from Timeline/Migrations/20200826164553_TimelineAddTitle.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/20200826164553_TimelineAddTitle.cs (renamed from Timeline/Migrations/20200826164553_TimelineAddTitle.cs)0
-rw-r--r--BackEnd/Timeline/Migrations/DatabaseContextModelSnapshot.cs (renamed from Timeline/Migrations/DatabaseContextModelSnapshot.cs)0
-rw-r--r--BackEnd/Timeline/MockClientApp/index.html (renamed from Timeline/MockClientApp/index.html)0
-rw-r--r--BackEnd/Timeline/Models/ByteData.cs (renamed from Timeline/Models/ByteData.cs)0
-rw-r--r--BackEnd/Timeline/Models/Converters/JsonDateTimeConverter.cs (renamed from Timeline/Models/Converters/JsonDateTimeConverter.cs)0
-rw-r--r--BackEnd/Timeline/Models/Converters/MyDateTimeConverter.cs (renamed from Timeline/Models/Converters/MyDateTimeConverter.cs)0
-rw-r--r--BackEnd/Timeline/Models/Http/ActionContextAccessorExtensions.cs (renamed from Timeline/Models/Http/ActionContextAccessorExtensions.cs)0
-rw-r--r--BackEnd/Timeline/Models/Http/Common.cs (renamed from Timeline/Models/Http/Common.cs)0
-rw-r--r--BackEnd/Timeline/Models/Http/ErrorResponse.cs (renamed from Timeline/Models/Http/ErrorResponse.cs)0
-rw-r--r--BackEnd/Timeline/Models/Http/Timeline.cs (renamed from Timeline/Models/Http/Timeline.cs)0
-rw-r--r--BackEnd/Timeline/Models/Http/TimelineController.cs (renamed from Timeline/Models/Http/TimelineController.cs)0
-rw-r--r--BackEnd/Timeline/Models/Http/TokenController.cs (renamed from Timeline/Models/Http/TokenController.cs)0
-rw-r--r--BackEnd/Timeline/Models/Http/UserController.cs (renamed from Timeline/Models/Http/UserController.cs)0
-rw-r--r--BackEnd/Timeline/Models/Http/UserInfo.cs (renamed from Timeline/Models/Http/UserInfo.cs)0
-rw-r--r--BackEnd/Timeline/Models/Timeline.cs (renamed from Timeline/Models/Timeline.cs)0
-rw-r--r--BackEnd/Timeline/Models/User.cs (renamed from Timeline/Models/User.cs)0
-rw-r--r--BackEnd/Timeline/Models/Validation/GeneralTimelineNameValidator.cs (renamed from Timeline/Models/Validation/GeneralTimelineNameValidator.cs)0
-rw-r--r--BackEnd/Timeline/Models/Validation/NameValidator.cs (renamed from Timeline/Models/Validation/NameValidator.cs)0
-rw-r--r--BackEnd/Timeline/Models/Validation/NicknameValidator.cs (renamed from Timeline/Models/Validation/NicknameValidator.cs)0
-rw-r--r--BackEnd/Timeline/Models/Validation/TimelineNameValidator.cs (renamed from Timeline/Models/Validation/TimelineNameValidator.cs)0
-rw-r--r--BackEnd/Timeline/Models/Validation/UsernameValidator.cs (renamed from Timeline/Models/Validation/UsernameValidator.cs)0
-rw-r--r--BackEnd/Timeline/Models/Validation/Validator.cs (renamed from Timeline/Models/Validation/Validator.cs)0
-rw-r--r--BackEnd/Timeline/Program.cs (renamed from Timeline/Program.cs)0
-rw-r--r--BackEnd/Timeline/Properties/launchSettings.json (renamed from Timeline/Properties/launchSettings.json)6
-rw-r--r--BackEnd/Timeline/Resources/Authentication/AuthHandler.Designer.cs (renamed from Timeline/Resources/Authentication/AuthHandler.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Authentication/AuthHandler.resx (renamed from Timeline/Resources/Authentication/AuthHandler.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Controllers/ControllerAuthExtensions.Designer.cs (renamed from Timeline/Resources/Controllers/ControllerAuthExtensions.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Controllers/ControllerAuthExtensions.resx (renamed from Timeline/Resources/Controllers/ControllerAuthExtensions.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Controllers/TimelineController.Designer.cs (renamed from Timeline/Resources/Controllers/TimelineController.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Controllers/TimelineController.resx (renamed from Timeline/Resources/Controllers/TimelineController.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Controllers/TokenController.Designer.cs (renamed from Timeline/Resources/Controllers/TokenController.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Controllers/TokenController.resx (renamed from Timeline/Resources/Controllers/TokenController.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Controllers/UserAvatarController.Designer.cs (renamed from Timeline/Resources/Controllers/UserAvatarController.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Controllers/UserAvatarController.resx (renamed from Timeline/Resources/Controllers/UserAvatarController.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Controllers/UserController.Designer.cs (renamed from Timeline/Resources/Controllers/UserController.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Controllers/UserController.resx (renamed from Timeline/Resources/Controllers/UserController.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Entities.Designer.cs (renamed from Timeline/Resources/Entities.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Entities.resx (renamed from Timeline/Resources/Entities.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Filters.Designer.cs (renamed from Timeline/Resources/Filters.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Filters.resx (renamed from Timeline/Resources/Filters.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Helper/DataCacheHelper.Designer.cs (renamed from Timeline/Resources/Helper/DataCacheHelper.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Helper/DataCacheHelper.resx (renamed from Timeline/Resources/Helper/DataCacheHelper.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Messages.Designer.cs (renamed from Timeline/Resources/Messages.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Messages.resx (renamed from Timeline/Resources/Messages.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Models/Http/Common.Designer.cs (renamed from Timeline/Resources/Models/Http/Common.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Models/Http/Common.resx (renamed from Timeline/Resources/Models/Http/Common.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Models/Http/Exception.Designer.cs (renamed from Timeline/Resources/Models/Http/Exception.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Models/Http/Exception.resx (renamed from Timeline/Resources/Models/Http/Exception.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Models/Validation/NameValidator.Designer.cs (renamed from Timeline/Resources/Models/Validation/NameValidator.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Models/Validation/NameValidator.resx (renamed from Timeline/Resources/Models/Validation/NameValidator.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Models/Validation/NicknameValidator.Designer.cs (renamed from Timeline/Resources/Models/Validation/NicknameValidator.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Models/Validation/NicknameValidator.resx (renamed from Timeline/Resources/Models/Validation/NicknameValidator.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Models/Validation/Validator.Designer.cs (renamed from Timeline/Resources/Models/Validation/Validator.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Models/Validation/Validator.resx (renamed from Timeline/Resources/Models/Validation/Validator.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Services/DataManager.Designer.cs (renamed from Timeline/Resources/Services/DataManager.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Services/DataManager.resx (renamed from Timeline/Resources/Services/DataManager.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Services/Exception.Designer.cs (renamed from Timeline/Resources/Services/Exception.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Services/Exception.resx (renamed from Timeline/Resources/Services/Exception.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Services/Exceptions.Designer.cs (renamed from Timeline/Resources/Services/Exceptions.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Services/Exceptions.resx (renamed from Timeline/Resources/Services/Exceptions.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Services/TimelineService.Designer.cs (renamed from Timeline/Resources/Services/TimelineService.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Services/TimelineService.resx (renamed from Timeline/Resources/Services/TimelineService.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Services/UserAvatarService.Designer.cs (renamed from Timeline/Resources/Services/UserAvatarService.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Services/UserAvatarService.resx (renamed from Timeline/Resources/Services/UserAvatarService.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Services/UserService.Designer.cs (renamed from Timeline/Resources/Services/UserService.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Services/UserService.resx (renamed from Timeline/Resources/Services/UserService.resx)0
-rw-r--r--BackEnd/Timeline/Resources/Services/UserTokenService.Designer.cs (renamed from Timeline/Resources/Services/UserTokenService.Designer.cs)0
-rw-r--r--BackEnd/Timeline/Resources/Services/UserTokenService.resx (renamed from Timeline/Resources/Services/UserTokenService.resx)0
-rw-r--r--BackEnd/Timeline/Routes/ApiRoutePrefixConvention.cs (renamed from Timeline/Routes/ApiRoutePrefixConvention.cs)0
-rw-r--r--BackEnd/Timeline/Routes/UnknownEndpointMiddleware.cs (renamed from Timeline/Routes/UnknownEndpointMiddleware.cs)0
-rw-r--r--BackEnd/Timeline/Services/BadPasswordException.cs (renamed from Timeline/Services/BadPasswordException.cs)0
-rw-r--r--BackEnd/Timeline/Services/Clock.cs (renamed from Timeline/Services/Clock.cs)0
-rw-r--r--BackEnd/Timeline/Services/DataManager.cs (renamed from Timeline/Services/DataManager.cs)0
-rw-r--r--BackEnd/Timeline/Services/DatabaseBackupService.cs (renamed from Timeline/Services/DatabaseBackupService.cs)0
-rw-r--r--BackEnd/Timeline/Services/DatabaseCorruptedException.cs (renamed from Timeline/Services/DatabaseCorruptedException.cs)0
-rw-r--r--BackEnd/Timeline/Services/ETagGenerator.cs (renamed from Timeline/Services/ETagGenerator.cs)0
-rw-r--r--BackEnd/Timeline/Services/EntityNames.cs (renamed from Timeline/Services/EntityNames.cs)0
-rw-r--r--BackEnd/Timeline/Services/Exceptions/EntityAlreadyExistError.cs (renamed from Timeline/Services/Exceptions/EntityAlreadyExistError.cs)0
-rw-r--r--BackEnd/Timeline/Services/Exceptions/EntityNotExistError.cs (renamed from Timeline/Services/Exceptions/EntityNotExistError.cs)0
-rw-r--r--BackEnd/Timeline/Services/Exceptions/ExceptionMessageHelper.cs (renamed from Timeline/Services/Exceptions/ExceptionMessageHelper.cs)0
-rw-r--r--BackEnd/Timeline/Services/Exceptions/ImageException.cs (renamed from Timeline/Services/Exceptions/ImageException.cs)0
-rw-r--r--BackEnd/Timeline/Services/Exceptions/TimelineNotExistException.cs (renamed from Timeline/Services/Exceptions/TimelineNotExistException.cs)0
-rw-r--r--BackEnd/Timeline/Services/Exceptions/TimelinePostNoDataException.cs (renamed from Timeline/Services/Exceptions/TimelinePostNoDataException.cs)0
-rw-r--r--BackEnd/Timeline/Services/Exceptions/TimelinePostNotExistException.cs (renamed from Timeline/Services/Exceptions/TimelinePostNotExistException.cs)0
-rw-r--r--BackEnd/Timeline/Services/Exceptions/UserNotExistException.cs (renamed from Timeline/Services/Exceptions/UserNotExistException.cs)0
-rw-r--r--BackEnd/Timeline/Services/ImageValidator.cs (renamed from Timeline/Services/ImageValidator.cs)0
-rw-r--r--BackEnd/Timeline/Services/JwtUserTokenBadFormatException.cs (renamed from Timeline/Services/JwtUserTokenBadFormatException.cs)0
-rw-r--r--BackEnd/Timeline/Services/PasswordBadFormatException.cs (renamed from Timeline/Services/PasswordBadFormatException.cs)0
-rw-r--r--BackEnd/Timeline/Services/PasswordService.cs (renamed from Timeline/Services/PasswordService.cs)0
-rw-r--r--BackEnd/Timeline/Services/PathProvider.cs (renamed from Timeline/Services/PathProvider.cs)0
-rw-r--r--BackEnd/Timeline/Services/TimelineService.cs (renamed from Timeline/Services/TimelineService.cs)0
-rw-r--r--BackEnd/Timeline/Services/UserAvatarService.cs (renamed from Timeline/Services/UserAvatarService.cs)0
-rw-r--r--BackEnd/Timeline/Services/UserDeleteService.cs (renamed from Timeline/Services/UserDeleteService.cs)0
-rw-r--r--BackEnd/Timeline/Services/UserRoleConvert.cs (renamed from Timeline/Services/UserRoleConvert.cs)0
-rw-r--r--BackEnd/Timeline/Services/UserService.cs (renamed from Timeline/Services/UserService.cs)0
-rw-r--r--BackEnd/Timeline/Services/UserTokenException.cs (renamed from Timeline/Services/UserTokenException.cs)0
-rw-r--r--BackEnd/Timeline/Services/UserTokenManager.cs (renamed from Timeline/Services/UserTokenManager.cs)0
-rw-r--r--BackEnd/Timeline/Services/UserTokenService.cs (renamed from Timeline/Services/UserTokenService.cs)0
-rw-r--r--BackEnd/Timeline/Startup.cs (renamed from Timeline/Startup.cs)4
-rw-r--r--BackEnd/Timeline/Swagger/ApiConvention.cs (renamed from Timeline/Swagger/ApiConvention.cs)0
-rw-r--r--BackEnd/Timeline/Swagger/ByteDataRequestOperationProcessor.cs (renamed from Timeline/Swagger/ByteDataRequestOperationProcessor.cs)0
-rw-r--r--BackEnd/Timeline/Swagger/DefaultDescriptionOperationProcessor.cs (renamed from Timeline/Swagger/DefaultDescriptionOperationProcessor.cs)0
-rw-r--r--BackEnd/Timeline/Swagger/DocumentDescriptionDocumentProcessor.cs (renamed from Timeline/Swagger/DocumentDescriptionDocumentProcessor.cs)0
-rw-r--r--BackEnd/Timeline/Timeline.csproj (renamed from Timeline/Timeline.csproj)34
-rw-r--r--BackEnd/Timeline/appsettings.Development.json (renamed from Timeline/appsettings.Development.json)0
-rw-r--r--BackEnd/Timeline/appsettings.json (renamed from Timeline/appsettings.json)0
-rw-r--r--BackEnd/Timeline/default-avatar.png (renamed from Timeline/ClientApp/src/app/http/mock/default-avatar.png)bin26442 -> 26442 bytes
-rw-r--r--BackEnd/Timeline/packages.lock.json (renamed from Timeline/packages.lock.json)0
-rw-r--r--BackEnd/tools/convert-eol.py (renamed from tools/convert-eol.py)0
-rw-r--r--Dockerfile26
-rw-r--r--FrontEnd/.babelrc (renamed from Timeline/ClientApp/.babelrc)0
-rw-r--r--FrontEnd/.editorconfig (renamed from Timeline/ClientApp/.editorconfig)0
-rw-r--r--FrontEnd/.eslintignore (renamed from Timeline/ClientApp/.eslintignore)1
-rw-r--r--FrontEnd/.eslintrc.js (renamed from Timeline/ClientApp/.eslintrc.js)0
-rw-r--r--FrontEnd/.gitattributes (renamed from Timeline/ClientApp/.gitattributes)0
-rw-r--r--FrontEnd/.gitignore (renamed from Timeline/ClientApp/.gitignore)0
-rw-r--r--FrontEnd/.vscode/extensions.json (renamed from Timeline/ClientApp/.vscode/extensions.json)0
-rw-r--r--FrontEnd/.vscode/preview.yml (renamed from Timeline/ClientApp/.vscode/preview.yml)20
-rw-r--r--FrontEnd/.vscode/settings.json (renamed from Timeline/ClientApp/.vscode/settings.json)0
-rw-r--r--FrontEnd/.yarnrc.yml (renamed from Timeline/ClientApp/.yarnrc.yml)0
-rw-r--r--FrontEnd/LICENSE (renamed from Timeline/ClientApp/LICENSE)0
-rw-r--r--FrontEnd/package.json113
-rw-r--r--FrontEnd/postcss.config.js10
-rw-r--r--FrontEnd/public/android-chrome-192x192.png (renamed from Timeline/ClientApp/public/android-chrome-192x192.png)bin8519 -> 8519 bytes
-rw-r--r--FrontEnd/public/android-chrome-512x512.png (renamed from Timeline/ClientApp/public/android-chrome-512x512.png)bin23619 -> 23619 bytes
-rw-r--r--FrontEnd/public/apple-touch-icon.png (renamed from Timeline/ClientApp/public/apple-touch-icon.png)bin2088 -> 2088 bytes
-rw-r--r--FrontEnd/public/browserconfig.xml (renamed from Timeline/ClientApp/public/browserconfig.xml)0
-rw-r--r--FrontEnd/public/favicon-16x16.png (renamed from Timeline/ClientApp/public/favicon-16x16.png)bin682 -> 682 bytes
-rw-r--r--FrontEnd/public/favicon-32x32.png (renamed from Timeline/ClientApp/public/favicon-32x32.png)bin821 -> 821 bytes
-rw-r--r--FrontEnd/public/favicon.ico (renamed from Timeline/ClientApp/public/favicon.ico)bin15086 -> 15086 bytes
-rw-r--r--FrontEnd/public/mstile-144x144.png (renamed from Timeline/ClientApp/public/mstile-144x144.png)bin2259 -> 2259 bytes
-rw-r--r--FrontEnd/public/mstile-150x150.png (renamed from Timeline/ClientApp/public/mstile-150x150.png)bin2240 -> 2240 bytes
-rw-r--r--FrontEnd/public/mstile-310x150.png (renamed from Timeline/ClientApp/public/mstile-310x150.png)bin2482 -> 2482 bytes
-rw-r--r--FrontEnd/public/mstile-310x310.png (renamed from Timeline/ClientApp/public/mstile-310x310.png)bin4937 -> 4937 bytes
-rw-r--r--FrontEnd/public/mstile-70x70.png (renamed from Timeline/ClientApp/public/mstile-70x70.png)bin1561 -> 1561 bytes
-rw-r--r--FrontEnd/public/safari-pinned-tab.svg (renamed from Timeline/ClientApp/public/safari-pinned-tab.svg)0
-rw-r--r--FrontEnd/public/site.webmanifest (renamed from Timeline/ClientApp/public/site.webmanifest)0
-rw-r--r--FrontEnd/sandbox.config.json (renamed from Timeline/ClientApp/sandbox.config.json)22
-rw-r--r--FrontEnd/src/app/App.tsx (renamed from Timeline/ClientApp/src/app/App.tsx)3
-rw-r--r--FrontEnd/src/app/common.ts (renamed from Timeline/ClientApp/src/app/common.ts)0
-rw-r--r--FrontEnd/src/app/http/common.ts (renamed from Timeline/ClientApp/src/app/http/common.ts)0
-rw-r--r--FrontEnd/src/app/http/timeline.ts (renamed from Timeline/ClientApp/src/app/http/timeline.ts)2
-rw-r--r--FrontEnd/src/app/http/token.ts (renamed from Timeline/ClientApp/src/app/http/token.ts)0
-rw-r--r--FrontEnd/src/app/http/user.ts (renamed from Timeline/ClientApp/src/app/http/user.ts)0
-rw-r--r--FrontEnd/src/app/i18n.ts (renamed from Timeline/ClientApp/src/app/i18n.ts)12
-rw-r--r--FrontEnd/src/app/index.ejs (renamed from Timeline/ClientApp/src/app/index.ejs)58
-rw-r--r--FrontEnd/src/app/index.sass (renamed from Timeline/ClientApp/src/app/index.sass)132
-rw-r--r--FrontEnd/src/app/index.tsx (renamed from Timeline/ClientApp/src/app/index.tsx)0
-rw-r--r--FrontEnd/src/app/locales/en/translation.ts (renamed from Timeline/ClientApp/src/app/locales/en/translation.ts)0
-rw-r--r--FrontEnd/src/app/locales/scheme.ts (renamed from Timeline/ClientApp/src/app/locales/scheme.ts)0
-rw-r--r--FrontEnd/src/app/locales/zh/translation.ts (renamed from Timeline/ClientApp/src/app/locales/zh/translation.ts)0
-rw-r--r--FrontEnd/src/app/service-worker.tsx (renamed from Timeline/ClientApp/src/app/service-worker.tsx)0
-rw-r--r--FrontEnd/src/app/services/DataHub.ts (renamed from Timeline/ClientApp/src/app/services/DataHub.ts)2
-rw-r--r--FrontEnd/src/app/services/alert.ts (renamed from Timeline/ClientApp/src/app/services/alert.ts)0
-rw-r--r--FrontEnd/src/app/services/common.ts (renamed from Timeline/ClientApp/src/app/services/common.ts)0
-rw-r--r--FrontEnd/src/app/services/timeline.ts (renamed from Timeline/ClientApp/src/app/services/timeline.ts)0
-rw-r--r--FrontEnd/src/app/services/user.ts (renamed from Timeline/ClientApp/src/app/services/user.ts)0
-rw-r--r--FrontEnd/src/app/tsconfig.json (renamed from Timeline/ClientApp/src/app/tsconfig.json)26
-rw-r--r--FrontEnd/src/app/typings.d.ts (renamed from Timeline/ClientApp/src/app/typings.d.ts)0
-rw-r--r--FrontEnd/src/app/utilities/rxjs.ts (renamed from Timeline/ClientApp/src/app/utilities/rxjs.ts)0
-rw-r--r--FrontEnd/src/app/utilities/url.ts (renamed from Timeline/ClientApp/src/app/utilities/url.ts)0
-rw-r--r--FrontEnd/src/app/views/about/about.sass (renamed from Timeline/ClientApp/src/app/views/about/about.sass)8
-rw-r--r--FrontEnd/src/app/views/about/author-avatar.png (renamed from Timeline/ClientApp/src/app/views/about/author-avatar.png)bin12038 -> 12038 bytes
-rw-r--r--FrontEnd/src/app/views/about/github.png (renamed from Timeline/ClientApp/src/app/views/about/github.png)bin4268 -> 4268 bytes
-rw-r--r--FrontEnd/src/app/views/about/index.tsx (renamed from Timeline/ClientApp/src/app/views/about/index.tsx)0
-rw-r--r--FrontEnd/src/app/views/admin/Admin.tsx (renamed from Timeline/ClientApp/src/app/views/admin/Admin.tsx)0
-rw-r--r--FrontEnd/src/app/views/admin/UserAdmin.tsx (renamed from Timeline/ClientApp/src/app/views/admin/UserAdmin.tsx)0
-rw-r--r--FrontEnd/src/app/views/common/AppBar.tsx (renamed from Timeline/ClientApp/src/app/views/common/AppBar.tsx)0
-rw-r--r--FrontEnd/src/app/views/common/BlobImage.tsx (renamed from Timeline/ClientApp/src/app/views/common/BlobImage.tsx)0
-rw-r--r--FrontEnd/src/app/views/common/ImageCropper.tsx (renamed from Timeline/ClientApp/src/app/views/common/ImageCropper.tsx)0
-rw-r--r--FrontEnd/src/app/views/common/LoadingButton.tsx (renamed from Timeline/ClientApp/src/app/views/common/LoadingButton.tsx)0
-rw-r--r--FrontEnd/src/app/views/common/LoadingPage.tsx (renamed from Timeline/ClientApp/src/app/views/common/LoadingPage.tsx)0
-rw-r--r--FrontEnd/src/app/views/common/OperationDialog.tsx (renamed from Timeline/ClientApp/src/app/views/common/OperationDialog.tsx)0
-rw-r--r--FrontEnd/src/app/views/common/SearchInput.tsx (renamed from Timeline/ClientApp/src/app/views/common/SearchInput.tsx)0
-rw-r--r--FrontEnd/src/app/views/common/TimelineLogo.tsx (renamed from Timeline/ClientApp/src/app/views/common/TimelineLogo.tsx)0
-rw-r--r--FrontEnd/src/app/views/common/UserTimelineLogo.tsx (renamed from Timeline/ClientApp/src/app/views/common/UserTimelineLogo.tsx)0
-rw-r--r--FrontEnd/src/app/views/common/alert/AlertHost.tsx (renamed from Timeline/ClientApp/src/app/views/common/alert/AlertHost.tsx)0
-rw-r--r--FrontEnd/src/app/views/common/alert/alert.sass (renamed from Timeline/ClientApp/src/app/views/common/alert/alert.sass)30
-rw-r--r--FrontEnd/src/app/views/common/common.sass (renamed from Timeline/ClientApp/src/app/views/common/common.sass)66
-rw-r--r--FrontEnd/src/app/views/home/BoardWithUser.tsx (renamed from Timeline/ClientApp/src/app/views/home/BoardWithUser.tsx)0
-rw-r--r--FrontEnd/src/app/views/home/BoardWithoutUser.tsx (renamed from Timeline/ClientApp/src/app/views/home/BoardWithoutUser.tsx)0
-rw-r--r--FrontEnd/src/app/views/home/OfflineBoard.tsx (renamed from Timeline/ClientApp/src/app/views/home/OfflineBoard.tsx)0
-rw-r--r--FrontEnd/src/app/views/home/TimelineBoard.tsx (renamed from Timeline/ClientApp/src/app/views/home/TimelineBoard.tsx)0
-rw-r--r--FrontEnd/src/app/views/home/TimelineCreateDialog.tsx (renamed from Timeline/ClientApp/src/app/views/home/TimelineCreateDialog.tsx)0
-rw-r--r--FrontEnd/src/app/views/home/home.sass (renamed from Timeline/ClientApp/src/app/views/home/home.sass)26
-rw-r--r--FrontEnd/src/app/views/home/index.tsx (renamed from Timeline/ClientApp/src/app/views/home/index.tsx)0
-rw-r--r--FrontEnd/src/app/views/login/index.tsx (renamed from Timeline/ClientApp/src/app/views/login/index.tsx)2
-rw-r--r--FrontEnd/src/app/views/login/login.sass (renamed from Timeline/ClientApp/src/app/views/login/login.sass)0
-rw-r--r--FrontEnd/src/app/views/settings/index.tsx (renamed from Timeline/ClientApp/src/app/views/settings/index.tsx)0
-rw-r--r--FrontEnd/src/app/views/timeline-common/CollapseButton.tsx (renamed from Timeline/ClientApp/src/app/views/timeline-common/CollapseButton.tsx)0
-rw-r--r--FrontEnd/src/app/views/timeline-common/InfoCardTemplate.tsx (renamed from Timeline/ClientApp/src/app/views/timeline-common/InfoCardTemplate.tsx)0
-rw-r--r--FrontEnd/src/app/views/timeline-common/SyncStatusBadge.tsx (renamed from Timeline/ClientApp/src/app/views/timeline-common/SyncStatusBadge.tsx)0
-rw-r--r--FrontEnd/src/app/views/timeline-common/Timeline.tsx (renamed from Timeline/ClientApp/src/app/views/timeline-common/Timeline.tsx)0
-rw-r--r--FrontEnd/src/app/views/timeline-common/TimelineItem.tsx (renamed from Timeline/ClientApp/src/app/views/timeline-common/TimelineItem.tsx)4
-rw-r--r--FrontEnd/src/app/views/timeline-common/TimelineMember.tsx (renamed from Timeline/ClientApp/src/app/views/timeline-common/TimelineMember.tsx)0
-rw-r--r--FrontEnd/src/app/views/timeline-common/TimelinePageTemplate.tsx (renamed from Timeline/ClientApp/src/app/views/timeline-common/TimelinePageTemplate.tsx)0
-rw-r--r--FrontEnd/src/app/views/timeline-common/TimelinePageTemplateUI.tsx (renamed from Timeline/ClientApp/src/app/views/timeline-common/TimelinePageTemplateUI.tsx)0
-rw-r--r--FrontEnd/src/app/views/timeline-common/TimelinePostEdit.tsx (renamed from Timeline/ClientApp/src/app/views/timeline-common/TimelinePostEdit.tsx)0
-rw-r--r--FrontEnd/src/app/views/timeline-common/TimelinePropertyChangeDialog.tsx (renamed from Timeline/ClientApp/src/app/views/timeline-common/TimelinePropertyChangeDialog.tsx)0
-rw-r--r--FrontEnd/src/app/views/timeline-common/TimelineTop.tsx (renamed from Timeline/ClientApp/src/app/views/timeline-common/TimelineTop.tsx)0
-rw-r--r--FrontEnd/src/app/views/timeline-common/timeline-common.sass (renamed from Timeline/ClientApp/src/app/views/timeline-common/timeline-common.sass)0
-rw-r--r--FrontEnd/src/app/views/timeline/TimelineDeleteDialog.tsx (renamed from Timeline/ClientApp/src/app/views/timeline/TimelineDeleteDialog.tsx)0
-rw-r--r--FrontEnd/src/app/views/timeline/TimelineInfoCard.tsx (renamed from Timeline/ClientApp/src/app/views/timeline/TimelineInfoCard.tsx)0
-rw-r--r--FrontEnd/src/app/views/timeline/TimelinePageUI.tsx (renamed from Timeline/ClientApp/src/app/views/timeline/TimelinePageUI.tsx)0
-rw-r--r--FrontEnd/src/app/views/timeline/index.tsx (renamed from Timeline/ClientApp/src/app/views/timeline/index.tsx)0
-rw-r--r--FrontEnd/src/app/views/timeline/timeline.sass (renamed from Timeline/ClientApp/src/app/views/timeline/timeline.sass)0
-rw-r--r--FrontEnd/src/app/views/user/ChangeAvatarDialog.tsx (renamed from Timeline/ClientApp/src/app/views/user/ChangeAvatarDialog.tsx)0
-rw-r--r--FrontEnd/src/app/views/user/ChangeNicknameDialog.tsx (renamed from Timeline/ClientApp/src/app/views/user/ChangeNicknameDialog.tsx)0
-rw-r--r--FrontEnd/src/app/views/user/UserInfoCard.tsx (renamed from Timeline/ClientApp/src/app/views/user/UserInfoCard.tsx)0
-rw-r--r--FrontEnd/src/app/views/user/UserPageUI.tsx (renamed from Timeline/ClientApp/src/app/views/user/UserPageUI.tsx)0
-rw-r--r--FrontEnd/src/app/views/user/index.tsx (renamed from Timeline/ClientApp/src/app/views/user/index.tsx)0
-rw-r--r--FrontEnd/src/app/views/user/user.sass (renamed from Timeline/ClientApp/src/app/views/user/user.sass)14
-rw-r--r--FrontEnd/src/sw/sw.ts (renamed from Timeline/ClientApp/src/sw/sw.ts)0
-rw-r--r--FrontEnd/src/sw/tsconfig.json (renamed from Timeline/ClientApp/src/sw/tsconfig.json)24
-rw-r--r--FrontEnd/src/tsconfig.json (renamed from Timeline/ClientApp/src/tsconfig.json)46
-rw-r--r--FrontEnd/webpack.common.js (renamed from Timeline/ClientApp/webpack.common.js)17
-rw-r--r--FrontEnd/webpack.config.dev.js (renamed from Timeline/ClientApp/webpack.config.dev.js)25
-rw-r--r--FrontEnd/webpack.config.prod.js (renamed from Timeline/ClientApp/webpack.config.prod.js)0
-rw-r--r--README.md4
-rw-r--r--Timeline/ClientApp/package.json115
-rw-r--r--Timeline/ClientApp/src/app/http/mock/common.ts78
-rw-r--r--Timeline/ClientApp/src/app/http/mock/install.ts11
-rw-r--r--Timeline/ClientApp/src/app/http/mock/timeline.ts660
-rw-r--r--Timeline/ClientApp/src/app/http/mock/token.ts53
-rw-r--r--Timeline/ClientApp/src/app/http/mock/user.ts139
-rw-r--r--Timeline/default-avatar.pngbin26442 -> 0 bytes
-rw-r--r--azure-pipelines.yml75
325 files changed, 449 insertions, 1499 deletions
diff --git a/.dockerignore b/.dockerignore
index c0e737c7..8a68a387 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,21 +1,23 @@
-.git
-Timeline/ClientApp/.git
-
-ErrorResponseCodeGenerator/bin
-ErrorResponseCodeGenerator/obj
-Timeline/bin
-Timeline/obj
-Timeline.ErrorCodes/bin
-Timeline.ErrorCodes/obj
-Timeline.Tests/bin
-Timeline.Tests/obj
-Timeline/publish
-
-Timeline/ClientApp/dist
-Timeline/ClientApp/node_modules
-Timeline/ClientApp/.yarn/*
-!Timeline/ClientApp/.yarn/releases
-!Timeline/ClientApp/.yarn/plugins
-!Timeline/ClientApp/.yarn/cache
-!Timeline/ClientApp/.yarn/sdks
-!Timeline/ClientApp/.yarn/versions
+.git
+
+art-src
+
+BackEnd/.vs
+BackEnd/Timeline/bin
+BackEnd/Timeline/obj
+BackEnd/Timeline.ErrorCodes/bin
+BackEnd/Timeline.ErrorCodes/obj
+BackEnd/Timeline.ErrorCodes.CodeGenerator/bin
+BackEnd/Timeline.ErrorCodes.CodeGenerator/obj
+BackEnd/Timeline.Tests/bin
+BackEnd/Timeline.Tests/obj
+BackEnd/Timeline/publish
+
+FrontEnd/dist
+FrontEnd/node_modules
+FrontEnd/.yarn/*
+!FrontEnd/.yarn/releases
+!FrontEnd/.yarn/plugins
+!FrontEnd/.yarn/cache
+!FrontEnd/.yarn/sdks
+!FrontEnd/.yarn/versions
diff --git a/.github/workflows/back-ci.yaml b/.github/workflows/back-ci.yaml
index a7f4f2d0..5b4609f7 100644
--- a/.github/workflows/back-ci.yaml
+++ b/.github/workflows/back-ci.yaml
@@ -3,17 +3,21 @@ name: Back End CI
on:
push:
branches: [master]
- paths-ignore:
- - "Timeline/ClientApp/**"
+ paths:
+ - "BackEnd/**"
pull_request:
branches: [master]
- paths-ignore:
- - "Timeline/ClientApp/**"
+ paths:
+ - "BackEnd/**"
jobs:
build:
name: Build
runs-on: ubuntu-latest
+ defaults:
+ run:
+ shell: bash
+ working-directory: BackEnd
env:
ASPNETCORE_ENVIRONMENT: "Development"
NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages
@@ -25,7 +29,7 @@ jobs:
uses: actions/cache@v2
with:
path: ${{ env.NUGET_PACKAGES }}
- key: nuget-${{ runner.os }}-${{ hashFiles('**/packages.lock.json') }}
+ key: nuget-${{ runner.os }}-${{ hashFiles('BackEnd/**/packages.lock.json') }}
restore-keys: |
nuget-${{ runner.os }}-
@@ -42,4 +46,4 @@ jobs:
if: ${{ success() || failure() }}
with:
name: test-result
- path: Timeline.Tests/TestResults/
+ path: BackEnd/Timeline.Tests/TestResults/
diff --git a/.github/workflows/front-ci.yaml b/.github/workflows/front-ci.yaml
index b549479a..93581dad 100644
--- a/.github/workflows/front-ci.yaml
+++ b/.github/workflows/front-ci.yaml
@@ -4,11 +4,11 @@ on:
push:
branches: [master]
paths:
- - "Timeline/ClientApp/**"
+ - "FrontEnd/**"
pull_request:
branches: [master]
paths:
- - "Timeline/ClientApp/**"
+ - "FrontEnd/**"
jobs:
build:
@@ -17,15 +17,15 @@ jobs:
defaults:
run:
shell: bash
- working-directory: Timeline/ClientApp
+ working-directory: FrontEnd
steps:
- uses: actions/checkout@v2
- - name: Use Node.js 14
+ - name: Use Node.js 15
uses: actions/setup-node@v1
with:
- node-version: "14"
+ node-version: "15"
- name: Restore Packages
run: yarn
@@ -40,4 +40,4 @@ jobs:
uses: actions/upload-artifact@v2
with:
name: dist
- path: Timeline/ClientApp/dist/
+ path: FrontEnd/dist/
diff --git a/.vscode/settings.json b/.vscode/settings.json
index f65e4358..7550c6fa 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,5 +1,5 @@
-{
- "yaml.schemas": {
- "https://json.schemastore.org/github-workflow": "/.github/workflows"
- }
+{
+ "yaml.schemas": {
+ "https://json.schemastore.org/github-workflow": "/.github/workflows"
+ }
} \ No newline at end of file
diff --git a/Directory.Build.props b/BackEnd/Directory.Build.props
index 5030ba17..5030ba17 100644
--- a/Directory.Build.props
+++ b/BackEnd/Directory.Build.props
diff --git a/Nuget.Config b/BackEnd/Nuget.Config
index e219de2b..e219de2b 100644
--- a/Nuget.Config
+++ b/BackEnd/Nuget.Config
diff --git a/Timeline.ErrorCodes.CodeGenerator/Program.cs b/BackEnd/Timeline.ErrorCodes.CodeGenerator/Program.cs
index 84ab5908..84ab5908 100644
--- a/Timeline.ErrorCodes.CodeGenerator/Program.cs
+++ b/BackEnd/Timeline.ErrorCodes.CodeGenerator/Program.cs
diff --git a/Timeline.ErrorCodes.CodeGenerator/Timeline.ErrorCodes.CodeGenerator.csproj b/BackEnd/Timeline.ErrorCodes.CodeGenerator/Timeline.ErrorCodes.CodeGenerator.csproj
index c8eb97f3..c8eb97f3 100644
--- a/Timeline.ErrorCodes.CodeGenerator/Timeline.ErrorCodes.CodeGenerator.csproj
+++ b/BackEnd/Timeline.ErrorCodes.CodeGenerator/Timeline.ErrorCodes.CodeGenerator.csproj
diff --git a/Timeline.ErrorCodes.CodeGenerator/packages.lock.json b/BackEnd/Timeline.ErrorCodes.CodeGenerator/packages.lock.json
index 69cfee1e..69cfee1e 100644
--- a/Timeline.ErrorCodes.CodeGenerator/packages.lock.json
+++ b/BackEnd/Timeline.ErrorCodes.CodeGenerator/packages.lock.json
diff --git a/Timeline.ErrorCodes/ErrorCodes.cs b/BackEnd/Timeline.ErrorCodes/ErrorCodes.cs
index 91e0c1fd..91e0c1fd 100644
--- a/Timeline.ErrorCodes/ErrorCodes.cs
+++ b/BackEnd/Timeline.ErrorCodes/ErrorCodes.cs
diff --git a/Timeline.ErrorCodes/Timeline.ErrorCodes.csproj b/BackEnd/Timeline.ErrorCodes/Timeline.ErrorCodes.csproj
index 01ca2568..01ca2568 100644
--- a/Timeline.ErrorCodes/Timeline.ErrorCodes.csproj
+++ b/BackEnd/Timeline.ErrorCodes/Timeline.ErrorCodes.csproj
diff --git a/Timeline.ErrorCodes/packages.lock.json b/BackEnd/Timeline.ErrorCodes/packages.lock.json
index dabf86bc..dabf86bc 100644
--- a/Timeline.ErrorCodes/packages.lock.json
+++ b/BackEnd/Timeline.ErrorCodes/packages.lock.json
diff --git a/Timeline.Tests/ErrorCodeTest.cs b/BackEnd/Timeline.Tests/ErrorCodeTest.cs
index 258ebf4e..258ebf4e 100644
--- a/Timeline.Tests/ErrorCodeTest.cs
+++ b/BackEnd/Timeline.Tests/ErrorCodeTest.cs
diff --git a/Timeline.Tests/GlobalSuppressions.cs b/BackEnd/Timeline.Tests/GlobalSuppressions.cs
index 0f873033..0f873033 100644
--- a/Timeline.Tests/GlobalSuppressions.cs
+++ b/BackEnd/Timeline.Tests/GlobalSuppressions.cs
diff --git a/Timeline.Tests/Helpers/AsyncFunctionAssertionsExtensions.cs b/BackEnd/Timeline.Tests/Helpers/AsyncFunctionAssertionsExtensions.cs
index b78309c0..b78309c0 100644
--- a/Timeline.Tests/Helpers/AsyncFunctionAssertionsExtensions.cs
+++ b/BackEnd/Timeline.Tests/Helpers/AsyncFunctionAssertionsExtensions.cs
diff --git a/Timeline.Tests/Helpers/CacheTestHelper.cs b/BackEnd/Timeline.Tests/Helpers/CacheTestHelper.cs
index b3709a28..b3709a28 100644
--- a/Timeline.Tests/Helpers/CacheTestHelper.cs
+++ b/BackEnd/Timeline.Tests/Helpers/CacheTestHelper.cs
diff --git a/Timeline.Tests/Helpers/HttpClientExtensions.cs b/BackEnd/Timeline.Tests/Helpers/HttpClientExtensions.cs
index 6513bbe7..6513bbe7 100644
--- a/Timeline.Tests/Helpers/HttpClientExtensions.cs
+++ b/BackEnd/Timeline.Tests/Helpers/HttpClientExtensions.cs
diff --git a/Timeline.Tests/Helpers/HttpResponseExtensions.cs b/BackEnd/Timeline.Tests/Helpers/HttpResponseExtensions.cs
index 2bd497f1..2bd497f1 100644
--- a/Timeline.Tests/Helpers/HttpResponseExtensions.cs
+++ b/BackEnd/Timeline.Tests/Helpers/HttpResponseExtensions.cs
diff --git a/Timeline.Tests/Helpers/ImageHelper.cs b/BackEnd/Timeline.Tests/Helpers/ImageHelper.cs
index 9bed0917..9bed0917 100644
--- a/Timeline.Tests/Helpers/ImageHelper.cs
+++ b/BackEnd/Timeline.Tests/Helpers/ImageHelper.cs
diff --git a/Timeline.Tests/Helpers/ParameterInfoAssertions.cs b/BackEnd/Timeline.Tests/Helpers/ParameterInfoAssertions.cs
index d3e5a41e..d3e5a41e 100644
--- a/Timeline.Tests/Helpers/ParameterInfoAssertions.cs
+++ b/BackEnd/Timeline.Tests/Helpers/ParameterInfoAssertions.cs
diff --git a/Timeline.Tests/Helpers/ReflectionHelper.cs b/BackEnd/Timeline.Tests/Helpers/ReflectionHelper.cs
index 3f6036e3..3f6036e3 100644
--- a/Timeline.Tests/Helpers/ReflectionHelper.cs
+++ b/BackEnd/Timeline.Tests/Helpers/ReflectionHelper.cs
diff --git a/Timeline.Tests/Helpers/ResponseAssertions.cs b/BackEnd/Timeline.Tests/Helpers/ResponseAssertions.cs
index 024732f5..024732f5 100644
--- a/Timeline.Tests/Helpers/ResponseAssertions.cs
+++ b/BackEnd/Timeline.Tests/Helpers/ResponseAssertions.cs
diff --git a/Timeline.Tests/Helpers/TestApplication.cs b/BackEnd/Timeline.Tests/Helpers/TestApplication.cs
index 684ffe2c..684ffe2c 100644
--- a/Timeline.Tests/Helpers/TestApplication.cs
+++ b/BackEnd/Timeline.Tests/Helpers/TestApplication.cs
diff --git a/Timeline.Tests/Helpers/TestClock.cs b/BackEnd/Timeline.Tests/Helpers/TestClock.cs
index 34adb245..34adb245 100644
--- a/Timeline.Tests/Helpers/TestClock.cs
+++ b/BackEnd/Timeline.Tests/Helpers/TestClock.cs
diff --git a/Timeline.Tests/Helpers/TestDatabase.cs b/BackEnd/Timeline.Tests/Helpers/TestDatabase.cs
index f0c26180..f0c26180 100644
--- a/Timeline.Tests/Helpers/TestDatabase.cs
+++ b/BackEnd/Timeline.Tests/Helpers/TestDatabase.cs
diff --git a/Timeline.Tests/IntegratedTests/AuthorizationTest.cs b/BackEnd/Timeline.Tests/IntegratedTests/AuthorizationTest.cs
index 38071394..38071394 100644
--- a/Timeline.Tests/IntegratedTests/AuthorizationTest.cs
+++ b/BackEnd/Timeline.Tests/IntegratedTests/AuthorizationTest.cs
diff --git a/Timeline.Tests/IntegratedTests/FrontEndTest.cs b/BackEnd/Timeline.Tests/IntegratedTests/FrontEndTest.cs
index 39a6e545..39a6e545 100644
--- a/Timeline.Tests/IntegratedTests/FrontEndTest.cs
+++ b/BackEnd/Timeline.Tests/IntegratedTests/FrontEndTest.cs
diff --git a/Timeline.Tests/IntegratedTests/IntegratedTestBase.cs b/BackEnd/Timeline.Tests/IntegratedTests/IntegratedTestBase.cs
index 7cf27297..7cf27297 100644
--- a/Timeline.Tests/IntegratedTests/IntegratedTestBase.cs
+++ b/BackEnd/Timeline.Tests/IntegratedTests/IntegratedTestBase.cs
diff --git a/Timeline.Tests/IntegratedTests/TimelineTest.cs b/BackEnd/Timeline.Tests/IntegratedTests/TimelineTest.cs
index ec46b96a..ec46b96a 100644
--- a/Timeline.Tests/IntegratedTests/TimelineTest.cs
+++ b/BackEnd/Timeline.Tests/IntegratedTests/TimelineTest.cs
diff --git a/Timeline.Tests/IntegratedTests/TokenTest.cs b/BackEnd/Timeline.Tests/IntegratedTests/TokenTest.cs
index 480d66cd..480d66cd 100644
--- a/Timeline.Tests/IntegratedTests/TokenTest.cs
+++ b/BackEnd/Timeline.Tests/IntegratedTests/TokenTest.cs
diff --git a/Timeline.Tests/IntegratedTests/UnknownEndpointTest.cs b/BackEnd/Timeline.Tests/IntegratedTests/UnknownEndpointTest.cs
index 732232e2..732232e2 100644
--- a/Timeline.Tests/IntegratedTests/UnknownEndpointTest.cs
+++ b/BackEnd/Timeline.Tests/IntegratedTests/UnknownEndpointTest.cs
diff --git a/Timeline.Tests/IntegratedTests/UserAvatarTest.cs b/BackEnd/Timeline.Tests/IntegratedTests/UserAvatarTest.cs
index f2796005..f2796005 100644
--- a/Timeline.Tests/IntegratedTests/UserAvatarTest.cs
+++ b/BackEnd/Timeline.Tests/IntegratedTests/UserAvatarTest.cs
diff --git a/Timeline.Tests/IntegratedTests/UserTest.cs b/BackEnd/Timeline.Tests/IntegratedTests/UserTest.cs
index 9dfcc6a5..9dfcc6a5 100644
--- a/Timeline.Tests/IntegratedTests/UserTest.cs
+++ b/BackEnd/Timeline.Tests/IntegratedTests/UserTest.cs
diff --git a/Timeline.Tests/PasswordGenerator.cs b/BackEnd/Timeline.Tests/PasswordGenerator.cs
index 863439b5..863439b5 100644
--- a/Timeline.Tests/PasswordGenerator.cs
+++ b/BackEnd/Timeline.Tests/PasswordGenerator.cs
diff --git a/Timeline.Tests/Properties/launchSettings.json b/BackEnd/Timeline.Tests/Properties/launchSettings.json
index f3ee419d..f3ee419d 100644
--- a/Timeline.Tests/Properties/launchSettings.json
+++ b/BackEnd/Timeline.Tests/Properties/launchSettings.json
diff --git a/Timeline.Tests/Services/TimelineServiceTest.cs b/BackEnd/Timeline.Tests/Services/TimelineServiceTest.cs
index 5a774b78..5a774b78 100644
--- a/Timeline.Tests/Services/TimelineServiceTest.cs
+++ b/BackEnd/Timeline.Tests/Services/TimelineServiceTest.cs
diff --git a/Timeline.Tests/Timeline.Tests.csproj b/BackEnd/Timeline.Tests/Timeline.Tests.csproj
index 973e0fc0..973e0fc0 100644
--- a/Timeline.Tests/Timeline.Tests.csproj
+++ b/BackEnd/Timeline.Tests/Timeline.Tests.csproj
diff --git a/Timeline.Tests/UsernameValidatorUnitTest.cs b/BackEnd/Timeline.Tests/UsernameValidatorUnitTest.cs
index 5b568adf..5b568adf 100644
--- a/Timeline.Tests/UsernameValidatorUnitTest.cs
+++ b/BackEnd/Timeline.Tests/UsernameValidatorUnitTest.cs
diff --git a/Timeline.Tests/coverletArgs.runsettings b/BackEnd/Timeline.Tests/coverletArgs.runsettings
index 24cd1822..24cd1822 100644
--- a/Timeline.Tests/coverletArgs.runsettings
+++ b/BackEnd/Timeline.Tests/coverletArgs.runsettings
diff --git a/Timeline.Tests/packages.lock.json b/BackEnd/Timeline.Tests/packages.lock.json
index 7150a222..7150a222 100644
--- a/Timeline.Tests/packages.lock.json
+++ b/BackEnd/Timeline.Tests/packages.lock.json
diff --git a/Timeline.sln b/BackEnd/Timeline.sln
index 40a32ee9..40a32ee9 100644
--- a/Timeline.sln
+++ b/BackEnd/Timeline.sln
diff --git a/Timeline/Auth/Attribute.cs b/BackEnd/Timeline/Auth/Attribute.cs
index 86d0109b..86d0109b 100644
--- a/Timeline/Auth/Attribute.cs
+++ b/BackEnd/Timeline/Auth/Attribute.cs
diff --git a/Timeline/Auth/MyAuthenticationHandler.cs b/BackEnd/Timeline/Auth/MyAuthenticationHandler.cs
index 3c97c329..3c97c329 100644
--- a/Timeline/Auth/MyAuthenticationHandler.cs
+++ b/BackEnd/Timeline/Auth/MyAuthenticationHandler.cs
diff --git a/Timeline/Auth/PrincipalExtensions.cs b/BackEnd/Timeline/Auth/PrincipalExtensions.cs
index ad7a887f..ad7a887f 100644
--- a/Timeline/Auth/PrincipalExtensions.cs
+++ b/BackEnd/Timeline/Auth/PrincipalExtensions.cs
diff --git a/Timeline/Configs/ApplicationConfiguration.cs b/BackEnd/Timeline/Configs/ApplicationConfiguration.cs
index df281adb..df281adb 100644
--- a/Timeline/Configs/ApplicationConfiguration.cs
+++ b/BackEnd/Timeline/Configs/ApplicationConfiguration.cs
diff --git a/Timeline/Configs/JwtConfiguration.cs b/BackEnd/Timeline/Configs/JwtConfiguration.cs
index af8052de..af8052de 100644
--- a/Timeline/Configs/JwtConfiguration.cs
+++ b/BackEnd/Timeline/Configs/JwtConfiguration.cs
diff --git a/Timeline/Controllers/ControllerAuthExtensions.cs b/BackEnd/Timeline/Controllers/ControllerAuthExtensions.cs
index 00a65454..00a65454 100644
--- a/Timeline/Controllers/ControllerAuthExtensions.cs
+++ b/BackEnd/Timeline/Controllers/ControllerAuthExtensions.cs
diff --git a/Timeline/Controllers/Testing/TestingAuthController.cs b/BackEnd/Timeline/Controllers/Testing/TestingAuthController.cs
index 4d3b3ec7..4d3b3ec7 100644
--- a/Timeline/Controllers/Testing/TestingAuthController.cs
+++ b/BackEnd/Timeline/Controllers/Testing/TestingAuthController.cs
diff --git a/Timeline/Controllers/TimelineController.cs b/BackEnd/Timeline/Controllers/TimelineController.cs
index 9a3147ea..9a3147ea 100644
--- a/Timeline/Controllers/TimelineController.cs
+++ b/BackEnd/Timeline/Controllers/TimelineController.cs
diff --git a/Timeline/Controllers/TokenController.cs b/BackEnd/Timeline/Controllers/TokenController.cs
index 8f2ca600..8f2ca600 100644
--- a/Timeline/Controllers/TokenController.cs
+++ b/BackEnd/Timeline/Controllers/TokenController.cs
diff --git a/Timeline/Controllers/UserAvatarController.cs b/BackEnd/Timeline/Controllers/UserAvatarController.cs
index bc4afa30..bc4afa30 100644
--- a/Timeline/Controllers/UserAvatarController.cs
+++ b/BackEnd/Timeline/Controllers/UserAvatarController.cs
diff --git a/Timeline/Controllers/UserController.cs b/BackEnd/Timeline/Controllers/UserController.cs
index 02c09aab..02c09aab 100644
--- a/Timeline/Controllers/UserController.cs
+++ b/BackEnd/Timeline/Controllers/UserController.cs
diff --git a/Timeline/Entities/DataEntity.cs b/BackEnd/Timeline/Entities/DataEntity.cs
index b21e2dbf..b21e2dbf 100644
--- a/Timeline/Entities/DataEntity.cs
+++ b/BackEnd/Timeline/Entities/DataEntity.cs
diff --git a/Timeline/Entities/DatabaseContext.cs b/BackEnd/Timeline/Entities/DatabaseContext.cs
index ecadd703..ecadd703 100644
--- a/Timeline/Entities/DatabaseContext.cs
+++ b/BackEnd/Timeline/Entities/DatabaseContext.cs
diff --git a/Timeline/Entities/JwtTokenEntity.cs b/BackEnd/Timeline/Entities/JwtTokenEntity.cs
index 40cb230a..40cb230a 100644
--- a/Timeline/Entities/JwtTokenEntity.cs
+++ b/BackEnd/Timeline/Entities/JwtTokenEntity.cs
diff --git a/Timeline/Entities/TimelineEntity.cs b/BackEnd/Timeline/Entities/TimelineEntity.cs
index 3e592673..3e592673 100644
--- a/Timeline/Entities/TimelineEntity.cs
+++ b/BackEnd/Timeline/Entities/TimelineEntity.cs
diff --git a/Timeline/Entities/TimelineMemberEntity.cs b/BackEnd/Timeline/Entities/TimelineMemberEntity.cs
index e76f2099..e76f2099 100644
--- a/Timeline/Entities/TimelineMemberEntity.cs
+++ b/BackEnd/Timeline/Entities/TimelineMemberEntity.cs
diff --git a/Timeline/Entities/TimelinePostEntity.cs b/BackEnd/Timeline/Entities/TimelinePostEntity.cs
index 07367fba..07367fba 100644
--- a/Timeline/Entities/TimelinePostEntity.cs
+++ b/BackEnd/Timeline/Entities/TimelinePostEntity.cs
diff --git a/Timeline/Entities/UserAvatarEntity.cs b/BackEnd/Timeline/Entities/UserAvatarEntity.cs
index 3c2720f7..3c2720f7 100644
--- a/Timeline/Entities/UserAvatarEntity.cs
+++ b/BackEnd/Timeline/Entities/UserAvatarEntity.cs
diff --git a/Timeline/Entities/UserEntity.cs b/BackEnd/Timeline/Entities/UserEntity.cs
index 0cfaa335..0cfaa335 100644
--- a/Timeline/Entities/UserEntity.cs
+++ b/BackEnd/Timeline/Entities/UserEntity.cs
diff --git a/Timeline/Entities/UtcDateAnnotation.cs b/BackEnd/Timeline/Entities/UtcDateAnnotation.cs
index 6600e701..6600e701 100644
--- a/Timeline/Entities/UtcDateAnnotation.cs
+++ b/BackEnd/Timeline/Entities/UtcDateAnnotation.cs
diff --git a/Timeline/Filters/Header.cs b/BackEnd/Timeline/Filters/Header.cs
index cc5ddd9f..cc5ddd9f 100644
--- a/Timeline/Filters/Header.cs
+++ b/BackEnd/Timeline/Filters/Header.cs
diff --git a/Timeline/Filters/Timeline.cs b/BackEnd/Timeline/Filters/Timeline.cs
index 6a730ee7..6a730ee7 100644
--- a/Timeline/Filters/Timeline.cs
+++ b/BackEnd/Timeline/Filters/Timeline.cs
diff --git a/Timeline/Formatters/BytesInputFormatter.cs b/BackEnd/Timeline/Formatters/BytesInputFormatter.cs
index ac6537c9..ac6537c9 100644
--- a/Timeline/Formatters/BytesInputFormatter.cs
+++ b/BackEnd/Timeline/Formatters/BytesInputFormatter.cs
diff --git a/Timeline/Formatters/StringInputFormatter.cs b/BackEnd/Timeline/Formatters/StringInputFormatter.cs
index b1924268..b1924268 100644
--- a/Timeline/Formatters/StringInputFormatter.cs
+++ b/BackEnd/Timeline/Formatters/StringInputFormatter.cs
diff --git a/Timeline/GlobalSuppressions.cs b/BackEnd/Timeline/GlobalSuppressions.cs
index 2b0da576..2b0da576 100644
--- a/Timeline/GlobalSuppressions.cs
+++ b/BackEnd/Timeline/GlobalSuppressions.cs
diff --git a/Timeline/Helpers/DataCacheHelper.cs b/BackEnd/Timeline/Helpers/DataCacheHelper.cs
index 1ad69708..1ad69708 100644
--- a/Timeline/Helpers/DataCacheHelper.cs
+++ b/BackEnd/Timeline/Helpers/DataCacheHelper.cs
diff --git a/Timeline/Helpers/DateTimeExtensions.cs b/BackEnd/Timeline/Helpers/DateTimeExtensions.cs
index 374f3bc9..374f3bc9 100644
--- a/Timeline/Helpers/DateTimeExtensions.cs
+++ b/BackEnd/Timeline/Helpers/DateTimeExtensions.cs
diff --git a/Timeline/Helpers/InvalidModelResponseFactory.cs b/BackEnd/Timeline/Helpers/InvalidModelResponseFactory.cs
index 9b253e7d..9b253e7d 100644
--- a/Timeline/Helpers/InvalidModelResponseFactory.cs
+++ b/BackEnd/Timeline/Helpers/InvalidModelResponseFactory.cs
diff --git a/Timeline/Helpers/LanguageHelper.cs b/BackEnd/Timeline/Helpers/LanguageHelper.cs
index b0156b8b..b0156b8b 100644
--- a/Timeline/Helpers/LanguageHelper.cs
+++ b/BackEnd/Timeline/Helpers/LanguageHelper.cs
diff --git a/Timeline/Helpers/Log.cs b/BackEnd/Timeline/Helpers/Log.cs
index af0b7e13..af0b7e13 100644
--- a/Timeline/Helpers/Log.cs
+++ b/BackEnd/Timeline/Helpers/Log.cs
diff --git a/Timeline/Migrations/20200105150407_Initialize.Designer.cs b/BackEnd/Timeline/Migrations/20200105150407_Initialize.Designer.cs
index 99e4eaac..99e4eaac 100644
--- a/Timeline/Migrations/20200105150407_Initialize.Designer.cs
+++ b/BackEnd/Timeline/Migrations/20200105150407_Initialize.Designer.cs
diff --git a/Timeline/Migrations/20200105150407_Initialize.cs b/BackEnd/Timeline/Migrations/20200105150407_Initialize.cs
index 4e12ef83..4e12ef83 100644
--- a/Timeline/Migrations/20200105150407_Initialize.cs
+++ b/BackEnd/Timeline/Migrations/20200105150407_Initialize.cs
diff --git a/Timeline/Migrations/20200131100517_RefactorUser.Designer.cs b/BackEnd/Timeline/Migrations/20200131100517_RefactorUser.Designer.cs
index 9b78eb15..9b78eb15 100644
--- a/Timeline/Migrations/20200131100517_RefactorUser.Designer.cs
+++ b/BackEnd/Timeline/Migrations/20200131100517_RefactorUser.Designer.cs
diff --git a/Timeline/Migrations/20200131100517_RefactorUser.cs b/BackEnd/Timeline/Migrations/20200131100517_RefactorUser.cs
index 8597ed50..8597ed50 100644
--- a/Timeline/Migrations/20200131100517_RefactorUser.cs
+++ b/BackEnd/Timeline/Migrations/20200131100517_RefactorUser.cs
diff --git a/Timeline/Migrations/20200221064341_AddJwtToken.Designer.cs b/BackEnd/Timeline/Migrations/20200221064341_AddJwtToken.Designer.cs
index eb328b52..eb328b52 100644
--- a/Timeline/Migrations/20200221064341_AddJwtToken.Designer.cs
+++ b/BackEnd/Timeline/Migrations/20200221064341_AddJwtToken.Designer.cs
diff --git a/Timeline/Migrations/20200221064341_AddJwtToken.cs b/BackEnd/Timeline/Migrations/20200221064341_AddJwtToken.cs
index 628970c6..628970c6 100644
--- a/Timeline/Migrations/20200221064341_AddJwtToken.cs
+++ b/BackEnd/Timeline/Migrations/20200221064341_AddJwtToken.cs
diff --git a/Timeline/Migrations/20200229103848_AddPostLocalId.Designer.cs b/BackEnd/Timeline/Migrations/20200229103848_AddPostLocalId.Designer.cs
index cf6ae8a3..cf6ae8a3 100644
--- a/Timeline/Migrations/20200229103848_AddPostLocalId.Designer.cs
+++ b/BackEnd/Timeline/Migrations/20200229103848_AddPostLocalId.Designer.cs
diff --git a/Timeline/Migrations/20200229103848_AddPostLocalId.cs b/BackEnd/Timeline/Migrations/20200229103848_AddPostLocalId.cs
index 497b38a1..497b38a1 100644
--- a/Timeline/Migrations/20200229103848_AddPostLocalId.cs
+++ b/BackEnd/Timeline/Migrations/20200229103848_AddPostLocalId.cs
diff --git a/Timeline/Migrations/20200306110049_AddDataTable.Designer.cs b/BackEnd/Timeline/Migrations/20200306110049_AddDataTable.Designer.cs
index 336ffc18..336ffc18 100644
--- a/Timeline/Migrations/20200306110049_AddDataTable.Designer.cs
+++ b/BackEnd/Timeline/Migrations/20200306110049_AddDataTable.Designer.cs
diff --git a/Timeline/Migrations/20200306110049_AddDataTable.cs b/BackEnd/Timeline/Migrations/20200306110049_AddDataTable.cs
index e33bf4c9..e33bf4c9 100644
--- a/Timeline/Migrations/20200306110049_AddDataTable.cs
+++ b/BackEnd/Timeline/Migrations/20200306110049_AddDataTable.cs
diff --git a/Timeline/Migrations/20200306111553_DropUserDetails.Designer.cs b/BackEnd/Timeline/Migrations/20200306111553_DropUserDetails.Designer.cs
index f0c4dc08..f0c4dc08 100644
--- a/Timeline/Migrations/20200306111553_DropUserDetails.Designer.cs
+++ b/BackEnd/Timeline/Migrations/20200306111553_DropUserDetails.Designer.cs
diff --git a/Timeline/Migrations/20200306111553_DropUserDetails.cs b/BackEnd/Timeline/Migrations/20200306111553_DropUserDetails.cs
index 0a176461..0a176461 100644
--- a/Timeline/Migrations/20200306111553_DropUserDetails.cs
+++ b/BackEnd/Timeline/Migrations/20200306111553_DropUserDetails.cs
diff --git a/Timeline/Migrations/20200312112552_AddImagePost.Designer.cs b/BackEnd/Timeline/Migrations/20200312112552_AddImagePost.Designer.cs
index bd75a916..bd75a916 100644
--- a/Timeline/Migrations/20200312112552_AddImagePost.Designer.cs
+++ b/BackEnd/Timeline/Migrations/20200312112552_AddImagePost.Designer.cs
diff --git a/Timeline/Migrations/20200312112552_AddImagePost.cs b/BackEnd/Timeline/Migrations/20200312112552_AddImagePost.cs
index d5098ce0..d5098ce0 100644
--- a/Timeline/Migrations/20200312112552_AddImagePost.cs
+++ b/BackEnd/Timeline/Migrations/20200312112552_AddImagePost.cs
diff --git a/Timeline/Migrations/20200614061237_AddTimelineUniqueId.Designer.cs b/BackEnd/Timeline/Migrations/20200614061237_AddTimelineUniqueId.Designer.cs
index adcc6308..adcc6308 100644
--- a/Timeline/Migrations/20200614061237_AddTimelineUniqueId.Designer.cs
+++ b/BackEnd/Timeline/Migrations/20200614061237_AddTimelineUniqueId.Designer.cs
diff --git a/Timeline/Migrations/20200614061237_AddTimelineUniqueId.cs b/BackEnd/Timeline/Migrations/20200614061237_AddTimelineUniqueId.cs
index 7abbed79..7abbed79 100644
--- a/Timeline/Migrations/20200614061237_AddTimelineUniqueId.cs
+++ b/BackEnd/Timeline/Migrations/20200614061237_AddTimelineUniqueId.cs
diff --git a/Timeline/Migrations/20200618064936_TimelineAddModifiedTime.Designer.cs b/BackEnd/Timeline/Migrations/20200618064936_TimelineAddModifiedTime.Designer.cs
index fd10dfa9..fd10dfa9 100644
--- a/Timeline/Migrations/20200618064936_TimelineAddModifiedTime.Designer.cs
+++ b/BackEnd/Timeline/Migrations/20200618064936_TimelineAddModifiedTime.Designer.cs
diff --git a/Timeline/Migrations/20200618064936_TimelineAddModifiedTime.cs b/BackEnd/Timeline/Migrations/20200618064936_TimelineAddModifiedTime.cs
index c277fe39..c277fe39 100644
--- a/Timeline/Migrations/20200618064936_TimelineAddModifiedTime.cs
+++ b/BackEnd/Timeline/Migrations/20200618064936_TimelineAddModifiedTime.cs
diff --git a/Timeline/Migrations/20200808071611_UserAddUniqueId.Designer.cs b/BackEnd/Timeline/Migrations/20200808071611_UserAddUniqueId.Designer.cs
index fe2329e4..fe2329e4 100644
--- a/Timeline/Migrations/20200808071611_UserAddUniqueId.Designer.cs
+++ b/BackEnd/Timeline/Migrations/20200808071611_UserAddUniqueId.Designer.cs
diff --git a/Timeline/Migrations/20200808071611_UserAddUniqueId.cs b/BackEnd/Timeline/Migrations/20200808071611_UserAddUniqueId.cs
index 651a2b05..651a2b05 100644
--- a/Timeline/Migrations/20200808071611_UserAddUniqueId.cs
+++ b/BackEnd/Timeline/Migrations/20200808071611_UserAddUniqueId.cs
diff --git a/Timeline/Migrations/20200810155908_AddTimesToUser.Designer.cs b/BackEnd/Timeline/Migrations/20200810155908_AddTimesToUser.Designer.cs
index 71cc54dc..71cc54dc 100644
--- a/Timeline/Migrations/20200810155908_AddTimesToUser.Designer.cs
+++ b/BackEnd/Timeline/Migrations/20200810155908_AddTimesToUser.Designer.cs
diff --git a/Timeline/Migrations/20200810155908_AddTimesToUser.cs b/BackEnd/Timeline/Migrations/20200810155908_AddTimesToUser.cs
index 369f85e6..369f85e6 100644
--- a/Timeline/Migrations/20200810155908_AddTimesToUser.cs
+++ b/BackEnd/Timeline/Migrations/20200810155908_AddTimesToUser.cs
diff --git a/Timeline/Migrations/20200810170533_MakePostAuthorOptional.Designer.cs b/BackEnd/Timeline/Migrations/20200810170533_MakePostAuthorOptional.Designer.cs
index 80598fdf..80598fdf 100644
--- a/Timeline/Migrations/20200810170533_MakePostAuthorOptional.Designer.cs
+++ b/BackEnd/Timeline/Migrations/20200810170533_MakePostAuthorOptional.Designer.cs
diff --git a/Timeline/Migrations/20200810170533_MakePostAuthorOptional.cs b/BackEnd/Timeline/Migrations/20200810170533_MakePostAuthorOptional.cs
index b0f0bca7..b0f0bca7 100644
--- a/Timeline/Migrations/20200810170533_MakePostAuthorOptional.cs
+++ b/BackEnd/Timeline/Migrations/20200810170533_MakePostAuthorOptional.cs
diff --git a/Timeline/Migrations/20200811080808_ChangeDateTimeOffsetToDateTime.Designer.cs b/BackEnd/Timeline/Migrations/20200811080808_ChangeDateTimeOffsetToDateTime.Designer.cs
index 58238557..58238557 100644
--- a/Timeline/Migrations/20200811080808_ChangeDateTimeOffsetToDateTime.Designer.cs
+++ b/BackEnd/Timeline/Migrations/20200811080808_ChangeDateTimeOffsetToDateTime.Designer.cs
diff --git a/Timeline/Migrations/20200811080808_ChangeDateTimeOffsetToDateTime.cs b/BackEnd/Timeline/Migrations/20200811080808_ChangeDateTimeOffsetToDateTime.cs
index eb6b44f3..eb6b44f3 100644
--- a/Timeline/Migrations/20200811080808_ChangeDateTimeOffsetToDateTime.cs
+++ b/BackEnd/Timeline/Migrations/20200811080808_ChangeDateTimeOffsetToDateTime.cs
diff --git a/Timeline/Migrations/20200826164553_TimelineAddTitle.Designer.cs b/BackEnd/Timeline/Migrations/20200826164553_TimelineAddTitle.Designer.cs
index f2279f3b..f2279f3b 100644
--- a/Timeline/Migrations/20200826164553_TimelineAddTitle.Designer.cs
+++ b/BackEnd/Timeline/Migrations/20200826164553_TimelineAddTitle.Designer.cs
diff --git a/Timeline/Migrations/20200826164553_TimelineAddTitle.cs b/BackEnd/Timeline/Migrations/20200826164553_TimelineAddTitle.cs
index 7e8c498b..7e8c498b 100644
--- a/Timeline/Migrations/20200826164553_TimelineAddTitle.cs
+++ b/BackEnd/Timeline/Migrations/20200826164553_TimelineAddTitle.cs
diff --git a/Timeline/Migrations/DatabaseContextModelSnapshot.cs b/BackEnd/Timeline/Migrations/DatabaseContextModelSnapshot.cs
index 65ae6c9a..65ae6c9a 100644
--- a/Timeline/Migrations/DatabaseContextModelSnapshot.cs
+++ b/BackEnd/Timeline/Migrations/DatabaseContextModelSnapshot.cs
diff --git a/Timeline/MockClientApp/index.html b/BackEnd/Timeline/MockClientApp/index.html
index 03cf371e..03cf371e 100644
--- a/Timeline/MockClientApp/index.html
+++ b/BackEnd/Timeline/MockClientApp/index.html
diff --git a/Timeline/Models/ByteData.cs b/BackEnd/Timeline/Models/ByteData.cs
index 7b832eb5..7b832eb5 100644
--- a/Timeline/Models/ByteData.cs
+++ b/BackEnd/Timeline/Models/ByteData.cs
diff --git a/Timeline/Models/Converters/JsonDateTimeConverter.cs b/BackEnd/Timeline/Models/Converters/JsonDateTimeConverter.cs
index 94b5cab0..94b5cab0 100644
--- a/Timeline/Models/Converters/JsonDateTimeConverter.cs
+++ b/BackEnd/Timeline/Models/Converters/JsonDateTimeConverter.cs
diff --git a/Timeline/Models/Converters/MyDateTimeConverter.cs b/BackEnd/Timeline/Models/Converters/MyDateTimeConverter.cs
index f125cd5c..f125cd5c 100644
--- a/Timeline/Models/Converters/MyDateTimeConverter.cs
+++ b/BackEnd/Timeline/Models/Converters/MyDateTimeConverter.cs
diff --git a/Timeline/Models/Http/ActionContextAccessorExtensions.cs b/BackEnd/Timeline/Models/Http/ActionContextAccessorExtensions.cs
index bcc55c5a..bcc55c5a 100644
--- a/Timeline/Models/Http/ActionContextAccessorExtensions.cs
+++ b/BackEnd/Timeline/Models/Http/ActionContextAccessorExtensions.cs
diff --git a/Timeline/Models/Http/Common.cs b/BackEnd/Timeline/Models/Http/Common.cs
index 5fa22c9e..5fa22c9e 100644
--- a/Timeline/Models/Http/Common.cs
+++ b/BackEnd/Timeline/Models/Http/Common.cs
diff --git a/Timeline/Models/Http/ErrorResponse.cs b/BackEnd/Timeline/Models/Http/ErrorResponse.cs
index ac86481f..ac86481f 100644
--- a/Timeline/Models/Http/ErrorResponse.cs
+++ b/BackEnd/Timeline/Models/Http/ErrorResponse.cs
diff --git a/Timeline/Models/Http/Timeline.cs b/BackEnd/Timeline/Models/Http/Timeline.cs
index a81b33f5..a81b33f5 100644
--- a/Timeline/Models/Http/Timeline.cs
+++ b/BackEnd/Timeline/Models/Http/Timeline.cs
diff --git a/Timeline/Models/Http/TimelineController.cs b/BackEnd/Timeline/Models/Http/TimelineController.cs
index 7bd141ed..7bd141ed 100644
--- a/Timeline/Models/Http/TimelineController.cs
+++ b/BackEnd/Timeline/Models/Http/TimelineController.cs
diff --git a/Timeline/Models/Http/TokenController.cs b/BackEnd/Timeline/Models/Http/TokenController.cs
index a42c44e5..a42c44e5 100644
--- a/Timeline/Models/Http/TokenController.cs
+++ b/BackEnd/Timeline/Models/Http/TokenController.cs
diff --git a/Timeline/Models/Http/UserController.cs b/BackEnd/Timeline/Models/Http/UserController.cs
index 6bc5a66e..6bc5a66e 100644
--- a/Timeline/Models/Http/UserController.cs
+++ b/BackEnd/Timeline/Models/Http/UserController.cs
diff --git a/Timeline/Models/Http/UserInfo.cs b/BackEnd/Timeline/Models/Http/UserInfo.cs
index d92a12c4..d92a12c4 100644
--- a/Timeline/Models/Http/UserInfo.cs
+++ b/BackEnd/Timeline/Models/Http/UserInfo.cs
diff --git a/Timeline/Models/Timeline.cs b/BackEnd/Timeline/Models/Timeline.cs
index a5987577..a5987577 100644
--- a/Timeline/Models/Timeline.cs
+++ b/BackEnd/Timeline/Models/Timeline.cs
diff --git a/Timeline/Models/User.cs b/BackEnd/Timeline/Models/User.cs
index f08a62db..f08a62db 100644
--- a/Timeline/Models/User.cs
+++ b/BackEnd/Timeline/Models/User.cs
diff --git a/Timeline/Models/Validation/GeneralTimelineNameValidator.cs b/BackEnd/Timeline/Models/Validation/GeneralTimelineNameValidator.cs
index e1c96fbd..e1c96fbd 100644
--- a/Timeline/Models/Validation/GeneralTimelineNameValidator.cs
+++ b/BackEnd/Timeline/Models/Validation/GeneralTimelineNameValidator.cs
diff --git a/Timeline/Models/Validation/NameValidator.cs b/BackEnd/Timeline/Models/Validation/NameValidator.cs
index b74c40b7..b74c40b7 100644
--- a/Timeline/Models/Validation/NameValidator.cs
+++ b/BackEnd/Timeline/Models/Validation/NameValidator.cs
diff --git a/Timeline/Models/Validation/NicknameValidator.cs b/BackEnd/Timeline/Models/Validation/NicknameValidator.cs
index 1d6ab163..1d6ab163 100644
--- a/Timeline/Models/Validation/NicknameValidator.cs
+++ b/BackEnd/Timeline/Models/Validation/NicknameValidator.cs
diff --git a/Timeline/Models/Validation/TimelineNameValidator.cs b/BackEnd/Timeline/Models/Validation/TimelineNameValidator.cs
index f1ab54e8..f1ab54e8 100644
--- a/Timeline/Models/Validation/TimelineNameValidator.cs
+++ b/BackEnd/Timeline/Models/Validation/TimelineNameValidator.cs
diff --git a/Timeline/Models/Validation/UsernameValidator.cs b/BackEnd/Timeline/Models/Validation/UsernameValidator.cs
index 87bbf85f..87bbf85f 100644
--- a/Timeline/Models/Validation/UsernameValidator.cs
+++ b/BackEnd/Timeline/Models/Validation/UsernameValidator.cs
diff --git a/Timeline/Models/Validation/Validator.cs b/BackEnd/Timeline/Models/Validation/Validator.cs
index aef7891c..aef7891c 100644
--- a/Timeline/Models/Validation/Validator.cs
+++ b/BackEnd/Timeline/Models/Validation/Validator.cs
diff --git a/Timeline/Program.cs b/BackEnd/Timeline/Program.cs
index 87e330a2..87e330a2 100644
--- a/Timeline/Program.cs
+++ b/BackEnd/Timeline/Program.cs
diff --git a/Timeline/Properties/launchSettings.json b/BackEnd/Timeline/Properties/launchSettings.json
index 73897158..de8186db 100644
--- a/Timeline/Properties/launchSettings.json
+++ b/BackEnd/Timeline/Properties/launchSettings.json
@@ -1,6 +1,6 @@
{
"profiles": {
- "Timeline": {
+ "Development": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
@@ -8,7 +8,7 @@
"ASPNETCORE_WORKDIR": "D:\\timeline-development"
}
},
- "Timeline-MockFrontEnd": {
+ "Development-Mock": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
@@ -16,7 +16,7 @@
"ASPNETCORE_WORKDIR": "D:\\timeline-development"
}
},
- "Timeline-Staging": {
+ "Staging": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Staging",
diff --git a/Timeline/Resources/Authentication/AuthHandler.Designer.cs b/BackEnd/Timeline/Resources/Authentication/AuthHandler.Designer.cs
index fd4540ea..fd4540ea 100644
--- a/Timeline/Resources/Authentication/AuthHandler.Designer.cs
+++ b/BackEnd/Timeline/Resources/Authentication/AuthHandler.Designer.cs
diff --git a/Timeline/Resources/Authentication/AuthHandler.resx b/BackEnd/Timeline/Resources/Authentication/AuthHandler.resx
index 4cddc8ce..4cddc8ce 100644
--- a/Timeline/Resources/Authentication/AuthHandler.resx
+++ b/BackEnd/Timeline/Resources/Authentication/AuthHandler.resx
diff --git a/Timeline/Resources/Controllers/ControllerAuthExtensions.Designer.cs b/BackEnd/Timeline/Resources/Controllers/ControllerAuthExtensions.Designer.cs
index 70a1d605..70a1d605 100644
--- a/Timeline/Resources/Controllers/ControllerAuthExtensions.Designer.cs
+++ b/BackEnd/Timeline/Resources/Controllers/ControllerAuthExtensions.Designer.cs
diff --git a/Timeline/Resources/Controllers/ControllerAuthExtensions.resx b/BackEnd/Timeline/Resources/Controllers/ControllerAuthExtensions.resx
index 03e6d95a..03e6d95a 100644
--- a/Timeline/Resources/Controllers/ControllerAuthExtensions.resx
+++ b/BackEnd/Timeline/Resources/Controllers/ControllerAuthExtensions.resx
diff --git a/Timeline/Resources/Controllers/TimelineController.Designer.cs b/BackEnd/Timeline/Resources/Controllers/TimelineController.Designer.cs
index ae6414e6..ae6414e6 100644
--- a/Timeline/Resources/Controllers/TimelineController.Designer.cs
+++ b/BackEnd/Timeline/Resources/Controllers/TimelineController.Designer.cs
diff --git a/Timeline/Resources/Controllers/TimelineController.resx b/BackEnd/Timeline/Resources/Controllers/TimelineController.resx
index 4cf3d6fb..4cf3d6fb 100644
--- a/Timeline/Resources/Controllers/TimelineController.resx
+++ b/BackEnd/Timeline/Resources/Controllers/TimelineController.resx
diff --git a/Timeline/Resources/Controllers/TokenController.Designer.cs b/BackEnd/Timeline/Resources/Controllers/TokenController.Designer.cs
index a7c2864b..a7c2864b 100644
--- a/Timeline/Resources/Controllers/TokenController.Designer.cs
+++ b/BackEnd/Timeline/Resources/Controllers/TokenController.Designer.cs
diff --git a/Timeline/Resources/Controllers/TokenController.resx b/BackEnd/Timeline/Resources/Controllers/TokenController.resx
index 683d6cc9..683d6cc9 100644
--- a/Timeline/Resources/Controllers/TokenController.resx
+++ b/BackEnd/Timeline/Resources/Controllers/TokenController.resx
diff --git a/Timeline/Resources/Controllers/UserAvatarController.Designer.cs b/BackEnd/Timeline/Resources/Controllers/UserAvatarController.Designer.cs
index b0c35ff9..b0c35ff9 100644
--- a/Timeline/Resources/Controllers/UserAvatarController.Designer.cs
+++ b/BackEnd/Timeline/Resources/Controllers/UserAvatarController.Designer.cs
diff --git a/Timeline/Resources/Controllers/UserAvatarController.resx b/BackEnd/Timeline/Resources/Controllers/UserAvatarController.resx
index 864d96c0..864d96c0 100644
--- a/Timeline/Resources/Controllers/UserAvatarController.resx
+++ b/BackEnd/Timeline/Resources/Controllers/UserAvatarController.resx
diff --git a/Timeline/Resources/Controllers/UserController.Designer.cs b/BackEnd/Timeline/Resources/Controllers/UserController.Designer.cs
index c8067614..c8067614 100644
--- a/Timeline/Resources/Controllers/UserController.Designer.cs
+++ b/BackEnd/Timeline/Resources/Controllers/UserController.Designer.cs
diff --git a/Timeline/Resources/Controllers/UserController.resx b/BackEnd/Timeline/Resources/Controllers/UserController.resx
index 0bdf4845..0bdf4845 100644
--- a/Timeline/Resources/Controllers/UserController.resx
+++ b/BackEnd/Timeline/Resources/Controllers/UserController.resx
diff --git a/Timeline/Resources/Entities.Designer.cs b/BackEnd/Timeline/Resources/Entities.Designer.cs
index 5f286f23..5f286f23 100644
--- a/Timeline/Resources/Entities.Designer.cs
+++ b/BackEnd/Timeline/Resources/Entities.Designer.cs
diff --git a/Timeline/Resources/Entities.resx b/BackEnd/Timeline/Resources/Entities.resx
index 1538b533..1538b533 100644
--- a/Timeline/Resources/Entities.resx
+++ b/BackEnd/Timeline/Resources/Entities.resx
diff --git a/Timeline/Resources/Filters.Designer.cs b/BackEnd/Timeline/Resources/Filters.Designer.cs
index dedfe498..dedfe498 100644
--- a/Timeline/Resources/Filters.Designer.cs
+++ b/BackEnd/Timeline/Resources/Filters.Designer.cs
diff --git a/Timeline/Resources/Filters.resx b/BackEnd/Timeline/Resources/Filters.resx
index 22620889..22620889 100644
--- a/Timeline/Resources/Filters.resx
+++ b/BackEnd/Timeline/Resources/Filters.resx
diff --git a/Timeline/Resources/Helper/DataCacheHelper.Designer.cs b/BackEnd/Timeline/Resources/Helper/DataCacheHelper.Designer.cs
index acf56d13..acf56d13 100644
--- a/Timeline/Resources/Helper/DataCacheHelper.Designer.cs
+++ b/BackEnd/Timeline/Resources/Helper/DataCacheHelper.Designer.cs
diff --git a/Timeline/Resources/Helper/DataCacheHelper.resx b/BackEnd/Timeline/Resources/Helper/DataCacheHelper.resx
index 515cfa9b..515cfa9b 100644
--- a/Timeline/Resources/Helper/DataCacheHelper.resx
+++ b/BackEnd/Timeline/Resources/Helper/DataCacheHelper.resx
diff --git a/Timeline/Resources/Messages.Designer.cs b/BackEnd/Timeline/Resources/Messages.Designer.cs
index bb654ce6..bb654ce6 100644
--- a/Timeline/Resources/Messages.Designer.cs
+++ b/BackEnd/Timeline/Resources/Messages.Designer.cs
diff --git a/Timeline/Resources/Messages.resx b/BackEnd/Timeline/Resources/Messages.resx
index 2bbf494e..2bbf494e 100644
--- a/Timeline/Resources/Messages.resx
+++ b/BackEnd/Timeline/Resources/Messages.resx
diff --git a/Timeline/Resources/Models/Http/Common.Designer.cs b/BackEnd/Timeline/Resources/Models/Http/Common.Designer.cs
index 5165463e..5165463e 100644
--- a/Timeline/Resources/Models/Http/Common.Designer.cs
+++ b/BackEnd/Timeline/Resources/Models/Http/Common.Designer.cs
diff --git a/Timeline/Resources/Models/Http/Common.resx b/BackEnd/Timeline/Resources/Models/Http/Common.resx
index 85ec4d32..85ec4d32 100644
--- a/Timeline/Resources/Models/Http/Common.resx
+++ b/BackEnd/Timeline/Resources/Models/Http/Common.resx
diff --git a/Timeline/Resources/Models/Http/Exception.Designer.cs b/BackEnd/Timeline/Resources/Models/Http/Exception.Designer.cs
index 19f42793..19f42793 100644
--- a/Timeline/Resources/Models/Http/Exception.Designer.cs
+++ b/BackEnd/Timeline/Resources/Models/Http/Exception.Designer.cs
diff --git a/Timeline/Resources/Models/Http/Exception.resx b/BackEnd/Timeline/Resources/Models/Http/Exception.resx
index 3f7bddb6..3f7bddb6 100644
--- a/Timeline/Resources/Models/Http/Exception.resx
+++ b/BackEnd/Timeline/Resources/Models/Http/Exception.resx
diff --git a/Timeline/Resources/Models/Validation/NameValidator.Designer.cs b/BackEnd/Timeline/Resources/Models/Validation/NameValidator.Designer.cs
index 3050049e..3050049e 100644
--- a/Timeline/Resources/Models/Validation/NameValidator.Designer.cs
+++ b/BackEnd/Timeline/Resources/Models/Validation/NameValidator.Designer.cs
diff --git a/Timeline/Resources/Models/Validation/NameValidator.resx b/BackEnd/Timeline/Resources/Models/Validation/NameValidator.resx
index 5e7e1745..5e7e1745 100644
--- a/Timeline/Resources/Models/Validation/NameValidator.resx
+++ b/BackEnd/Timeline/Resources/Models/Validation/NameValidator.resx
diff --git a/Timeline/Resources/Models/Validation/NicknameValidator.Designer.cs b/BackEnd/Timeline/Resources/Models/Validation/NicknameValidator.Designer.cs
index 522f305a..522f305a 100644
--- a/Timeline/Resources/Models/Validation/NicknameValidator.Designer.cs
+++ b/BackEnd/Timeline/Resources/Models/Validation/NicknameValidator.Designer.cs
diff --git a/Timeline/Resources/Models/Validation/NicknameValidator.resx b/BackEnd/Timeline/Resources/Models/Validation/NicknameValidator.resx
index b191b505..b191b505 100644
--- a/Timeline/Resources/Models/Validation/NicknameValidator.resx
+++ b/BackEnd/Timeline/Resources/Models/Validation/NicknameValidator.resx
diff --git a/Timeline/Resources/Models/Validation/Validator.Designer.cs b/BackEnd/Timeline/Resources/Models/Validation/Validator.Designer.cs
index 74d4c169..74d4c169 100644
--- a/Timeline/Resources/Models/Validation/Validator.Designer.cs
+++ b/BackEnd/Timeline/Resources/Models/Validation/Validator.Designer.cs
diff --git a/Timeline/Resources/Models/Validation/Validator.resx b/BackEnd/Timeline/Resources/Models/Validation/Validator.resx
index 8317e3eb..8317e3eb 100644
--- a/Timeline/Resources/Models/Validation/Validator.resx
+++ b/BackEnd/Timeline/Resources/Models/Validation/Validator.resx
diff --git a/Timeline/Resources/Services/DataManager.Designer.cs b/BackEnd/Timeline/Resources/Services/DataManager.Designer.cs
index 0872059a..0872059a 100644
--- a/Timeline/Resources/Services/DataManager.Designer.cs
+++ b/BackEnd/Timeline/Resources/Services/DataManager.Designer.cs
diff --git a/Timeline/Resources/Services/DataManager.resx b/BackEnd/Timeline/Resources/Services/DataManager.resx
index 688e0e96..688e0e96 100644
--- a/Timeline/Resources/Services/DataManager.resx
+++ b/BackEnd/Timeline/Resources/Services/DataManager.resx
diff --git a/Timeline/Resources/Services/Exception.Designer.cs b/BackEnd/Timeline/Resources/Services/Exception.Designer.cs
index 21ca7b86..21ca7b86 100644
--- a/Timeline/Resources/Services/Exception.Designer.cs
+++ b/BackEnd/Timeline/Resources/Services/Exception.Designer.cs
diff --git a/Timeline/Resources/Services/Exception.resx b/BackEnd/Timeline/Resources/Services/Exception.resx
index c31ed7c7..c31ed7c7 100644
--- a/Timeline/Resources/Services/Exception.resx
+++ b/BackEnd/Timeline/Resources/Services/Exception.resx
diff --git a/Timeline/Resources/Services/Exceptions.Designer.cs b/BackEnd/Timeline/Resources/Services/Exceptions.Designer.cs
index 1dbe11c9..1dbe11c9 100644
--- a/Timeline/Resources/Services/Exceptions.Designer.cs
+++ b/BackEnd/Timeline/Resources/Services/Exceptions.Designer.cs
diff --git a/Timeline/Resources/Services/Exceptions.resx b/BackEnd/Timeline/Resources/Services/Exceptions.resx
index e9595caa..e9595caa 100644
--- a/Timeline/Resources/Services/Exceptions.resx
+++ b/BackEnd/Timeline/Resources/Services/Exceptions.resx
diff --git a/Timeline/Resources/Services/TimelineService.Designer.cs b/BackEnd/Timeline/Resources/Services/TimelineService.Designer.cs
index e16c1337..e16c1337 100644
--- a/Timeline/Resources/Services/TimelineService.Designer.cs
+++ b/BackEnd/Timeline/Resources/Services/TimelineService.Designer.cs
diff --git a/Timeline/Resources/Services/TimelineService.resx b/BackEnd/Timeline/Resources/Services/TimelineService.resx
index 9314f51b..9314f51b 100644
--- a/Timeline/Resources/Services/TimelineService.resx
+++ b/BackEnd/Timeline/Resources/Services/TimelineService.resx
diff --git a/Timeline/Resources/Services/UserAvatarService.Designer.cs b/BackEnd/Timeline/Resources/Services/UserAvatarService.Designer.cs
index c72d4215..c72d4215 100644
--- a/Timeline/Resources/Services/UserAvatarService.Designer.cs
+++ b/BackEnd/Timeline/Resources/Services/UserAvatarService.Designer.cs
diff --git a/Timeline/Resources/Services/UserAvatarService.resx b/BackEnd/Timeline/Resources/Services/UserAvatarService.resx
index da9d7203..da9d7203 100644
--- a/Timeline/Resources/Services/UserAvatarService.resx
+++ b/BackEnd/Timeline/Resources/Services/UserAvatarService.resx
diff --git a/Timeline/Resources/Services/UserService.Designer.cs b/BackEnd/Timeline/Resources/Services/UserService.Designer.cs
index cdf7f390..cdf7f390 100644
--- a/Timeline/Resources/Services/UserService.Designer.cs
+++ b/BackEnd/Timeline/Resources/Services/UserService.Designer.cs
diff --git a/Timeline/Resources/Services/UserService.resx b/BackEnd/Timeline/Resources/Services/UserService.resx
index 09bd4abb..09bd4abb 100644
--- a/Timeline/Resources/Services/UserService.resx
+++ b/BackEnd/Timeline/Resources/Services/UserService.resx
diff --git a/Timeline/Resources/Services/UserTokenService.Designer.cs b/BackEnd/Timeline/Resources/Services/UserTokenService.Designer.cs
index 3c3c7e41..3c3c7e41 100644
--- a/Timeline/Resources/Services/UserTokenService.Designer.cs
+++ b/BackEnd/Timeline/Resources/Services/UserTokenService.Designer.cs
diff --git a/Timeline/Resources/Services/UserTokenService.resx b/BackEnd/Timeline/Resources/Services/UserTokenService.resx
index 1ce78427..1ce78427 100644
--- a/Timeline/Resources/Services/UserTokenService.resx
+++ b/BackEnd/Timeline/Resources/Services/UserTokenService.resx
diff --git a/Timeline/Routes/ApiRoutePrefixConvention.cs b/BackEnd/Timeline/Routes/ApiRoutePrefixConvention.cs
index ca38a0d9..ca38a0d9 100644
--- a/Timeline/Routes/ApiRoutePrefixConvention.cs
+++ b/BackEnd/Timeline/Routes/ApiRoutePrefixConvention.cs
diff --git a/Timeline/Routes/UnknownEndpointMiddleware.cs b/BackEnd/Timeline/Routes/UnknownEndpointMiddleware.cs
index 25ec563c..25ec563c 100644
--- a/Timeline/Routes/UnknownEndpointMiddleware.cs
+++ b/BackEnd/Timeline/Routes/UnknownEndpointMiddleware.cs
diff --git a/Timeline/Services/BadPasswordException.cs b/BackEnd/Timeline/Services/BadPasswordException.cs
index f609371d..f609371d 100644
--- a/Timeline/Services/BadPasswordException.cs
+++ b/BackEnd/Timeline/Services/BadPasswordException.cs
diff --git a/Timeline/Services/Clock.cs b/BackEnd/Timeline/Services/Clock.cs
index 4395edcd..4395edcd 100644
--- a/Timeline/Services/Clock.cs
+++ b/BackEnd/Timeline/Services/Clock.cs
diff --git a/Timeline/Services/DataManager.cs b/BackEnd/Timeline/Services/DataManager.cs
index d447b0d5..d447b0d5 100644
--- a/Timeline/Services/DataManager.cs
+++ b/BackEnd/Timeline/Services/DataManager.cs
diff --git a/Timeline/Services/DatabaseBackupService.cs b/BackEnd/Timeline/Services/DatabaseBackupService.cs
index a76b2a0d..a76b2a0d 100644
--- a/Timeline/Services/DatabaseBackupService.cs
+++ b/BackEnd/Timeline/Services/DatabaseBackupService.cs
diff --git a/Timeline/Services/DatabaseCorruptedException.cs b/BackEnd/Timeline/Services/DatabaseCorruptedException.cs
index 9988e0ad..9988e0ad 100644
--- a/Timeline/Services/DatabaseCorruptedException.cs
+++ b/BackEnd/Timeline/Services/DatabaseCorruptedException.cs
diff --git a/Timeline/Services/ETagGenerator.cs b/BackEnd/Timeline/Services/ETagGenerator.cs
index 4493e903..4493e903 100644
--- a/Timeline/Services/ETagGenerator.cs
+++ b/BackEnd/Timeline/Services/ETagGenerator.cs
diff --git a/Timeline/Services/EntityNames.cs b/BackEnd/Timeline/Services/EntityNames.cs
index 0ce1de3b..0ce1de3b 100644
--- a/Timeline/Services/EntityNames.cs
+++ b/BackEnd/Timeline/Services/EntityNames.cs
diff --git a/Timeline/Services/Exceptions/EntityAlreadyExistError.cs b/BackEnd/Timeline/Services/Exceptions/EntityAlreadyExistError.cs
index 7db2e860..7db2e860 100644
--- a/Timeline/Services/Exceptions/EntityAlreadyExistError.cs
+++ b/BackEnd/Timeline/Services/Exceptions/EntityAlreadyExistError.cs
diff --git a/Timeline/Services/Exceptions/EntityNotExistError.cs b/BackEnd/Timeline/Services/Exceptions/EntityNotExistError.cs
index e79496d3..e79496d3 100644
--- a/Timeline/Services/Exceptions/EntityNotExistError.cs
+++ b/BackEnd/Timeline/Services/Exceptions/EntityNotExistError.cs
diff --git a/Timeline/Services/Exceptions/ExceptionMessageHelper.cs b/BackEnd/Timeline/Services/Exceptions/ExceptionMessageHelper.cs
index be3c42a4..be3c42a4 100644
--- a/Timeline/Services/Exceptions/ExceptionMessageHelper.cs
+++ b/BackEnd/Timeline/Services/Exceptions/ExceptionMessageHelper.cs
diff --git a/Timeline/Services/Exceptions/ImageException.cs b/BackEnd/Timeline/Services/Exceptions/ImageException.cs
index 20dd48ae..20dd48ae 100644
--- a/Timeline/Services/Exceptions/ImageException.cs
+++ b/BackEnd/Timeline/Services/Exceptions/ImageException.cs
diff --git a/Timeline/Services/Exceptions/TimelineNotExistException.cs b/BackEnd/Timeline/Services/Exceptions/TimelineNotExistException.cs
index 70970b24..70970b24 100644
--- a/Timeline/Services/Exceptions/TimelineNotExistException.cs
+++ b/BackEnd/Timeline/Services/Exceptions/TimelineNotExistException.cs
diff --git a/Timeline/Services/Exceptions/TimelinePostNoDataException.cs b/BackEnd/Timeline/Services/Exceptions/TimelinePostNoDataException.cs
index c4b6bf62..c4b6bf62 100644
--- a/Timeline/Services/Exceptions/TimelinePostNoDataException.cs
+++ b/BackEnd/Timeline/Services/Exceptions/TimelinePostNoDataException.cs
diff --git a/Timeline/Services/Exceptions/TimelinePostNotExistException.cs b/BackEnd/Timeline/Services/Exceptions/TimelinePostNotExistException.cs
index f95dd410..f95dd410 100644
--- a/Timeline/Services/Exceptions/TimelinePostNotExistException.cs
+++ b/BackEnd/Timeline/Services/Exceptions/TimelinePostNotExistException.cs
diff --git a/Timeline/Services/Exceptions/UserNotExistException.cs b/BackEnd/Timeline/Services/Exceptions/UserNotExistException.cs
index 7ef714df..7ef714df 100644
--- a/Timeline/Services/Exceptions/UserNotExistException.cs
+++ b/BackEnd/Timeline/Services/Exceptions/UserNotExistException.cs
diff --git a/Timeline/Services/ImageValidator.cs b/BackEnd/Timeline/Services/ImageValidator.cs
index 59424a7c..59424a7c 100644
--- a/Timeline/Services/ImageValidator.cs
+++ b/BackEnd/Timeline/Services/ImageValidator.cs
diff --git a/Timeline/Services/JwtUserTokenBadFormatException.cs b/BackEnd/Timeline/Services/JwtUserTokenBadFormatException.cs
index c528c3e3..c528c3e3 100644
--- a/Timeline/Services/JwtUserTokenBadFormatException.cs
+++ b/BackEnd/Timeline/Services/JwtUserTokenBadFormatException.cs
diff --git a/Timeline/Services/PasswordBadFormatException.cs b/BackEnd/Timeline/Services/PasswordBadFormatException.cs
index 2029ebb4..2029ebb4 100644
--- a/Timeline/Services/PasswordBadFormatException.cs
+++ b/BackEnd/Timeline/Services/PasswordBadFormatException.cs
diff --git a/Timeline/Services/PasswordService.cs b/BackEnd/Timeline/Services/PasswordService.cs
index 8114a520..8114a520 100644
--- a/Timeline/Services/PasswordService.cs
+++ b/BackEnd/Timeline/Services/PasswordService.cs
diff --git a/Timeline/Services/PathProvider.cs b/BackEnd/Timeline/Services/PathProvider.cs
index 1baba5c0..1baba5c0 100644
--- a/Timeline/Services/PathProvider.cs
+++ b/BackEnd/Timeline/Services/PathProvider.cs
diff --git a/Timeline/Services/TimelineService.cs b/BackEnd/Timeline/Services/TimelineService.cs
index 4bcae596..4bcae596 100644
--- a/Timeline/Services/TimelineService.cs
+++ b/BackEnd/Timeline/Services/TimelineService.cs
diff --git a/Timeline/Services/UserAvatarService.cs b/BackEnd/Timeline/Services/UserAvatarService.cs
index b41c45fd..b41c45fd 100644
--- a/Timeline/Services/UserAvatarService.cs
+++ b/BackEnd/Timeline/Services/UserAvatarService.cs
diff --git a/Timeline/Services/UserDeleteService.cs b/BackEnd/Timeline/Services/UserDeleteService.cs
index 845de573..845de573 100644
--- a/Timeline/Services/UserDeleteService.cs
+++ b/BackEnd/Timeline/Services/UserDeleteService.cs
diff --git a/Timeline/Services/UserRoleConvert.cs b/BackEnd/Timeline/Services/UserRoleConvert.cs
index f27ee1bb..f27ee1bb 100644
--- a/Timeline/Services/UserRoleConvert.cs
+++ b/BackEnd/Timeline/Services/UserRoleConvert.cs
diff --git a/Timeline/Services/UserService.cs b/BackEnd/Timeline/Services/UserService.cs
index 821bc33d..821bc33d 100644
--- a/Timeline/Services/UserService.cs
+++ b/BackEnd/Timeline/Services/UserService.cs
diff --git a/Timeline/Services/UserTokenException.cs b/BackEnd/Timeline/Services/UserTokenException.cs
index d25fabb3..d25fabb3 100644
--- a/Timeline/Services/UserTokenException.cs
+++ b/BackEnd/Timeline/Services/UserTokenException.cs
diff --git a/Timeline/Services/UserTokenManager.cs b/BackEnd/Timeline/Services/UserTokenManager.cs
index 813dae67..813dae67 100644
--- a/Timeline/Services/UserTokenManager.cs
+++ b/BackEnd/Timeline/Services/UserTokenManager.cs
diff --git a/Timeline/Services/UserTokenService.cs b/BackEnd/Timeline/Services/UserTokenService.cs
index 86f3a0f7..86f3a0f7 100644
--- a/Timeline/Services/UserTokenService.cs
+++ b/BackEnd/Timeline/Services/UserTokenService.cs
diff --git a/Timeline/Startup.cs b/BackEnd/Timeline/Startup.cs
index 82c231cb..576836eb 100644
--- a/Timeline/Startup.cs
+++ b/BackEnd/Timeline/Startup.cs
@@ -137,7 +137,7 @@ namespace Timeline
{
services.AddSpaStaticFiles(config =>
{
- config.RootPath = "ClientApp/dist";
+ config.RootPath = "ClientApp";
});
}
}
@@ -174,8 +174,6 @@ namespace Timeline
{
app.UseSpa(spa =>
{
- spa.Options.SourcePath = useMockFrontEnd ? "MockClientApp" : "ClientApp";
-
if (!useMockFrontEnd && (Configuration.GetValue<bool?>(ApplicationConfiguration.UseProxyFrontEndKey) ?? false))
{
spa.UseProxyToSpaDevelopmentServer(new UriBuilder("http", "localhost", 3000).Uri);
diff --git a/Timeline/Swagger/ApiConvention.cs b/BackEnd/Timeline/Swagger/ApiConvention.cs
index dbf0b2fe..dbf0b2fe 100644
--- a/Timeline/Swagger/ApiConvention.cs
+++ b/BackEnd/Timeline/Swagger/ApiConvention.cs
diff --git a/Timeline/Swagger/ByteDataRequestOperationProcessor.cs b/BackEnd/Timeline/Swagger/ByteDataRequestOperationProcessor.cs
index 887831ac..887831ac 100644
--- a/Timeline/Swagger/ByteDataRequestOperationProcessor.cs
+++ b/BackEnd/Timeline/Swagger/ByteDataRequestOperationProcessor.cs
diff --git a/Timeline/Swagger/DefaultDescriptionOperationProcessor.cs b/BackEnd/Timeline/Swagger/DefaultDescriptionOperationProcessor.cs
index 4967cc6a..4967cc6a 100644
--- a/Timeline/Swagger/DefaultDescriptionOperationProcessor.cs
+++ b/BackEnd/Timeline/Swagger/DefaultDescriptionOperationProcessor.cs
diff --git a/Timeline/Swagger/DocumentDescriptionDocumentProcessor.cs b/BackEnd/Timeline/Swagger/DocumentDescriptionDocumentProcessor.cs
index dc5ddd96..dc5ddd96 100644
--- a/Timeline/Swagger/DocumentDescriptionDocumentProcessor.cs
+++ b/BackEnd/Timeline/Swagger/DocumentDescriptionDocumentProcessor.cs
diff --git a/Timeline/Timeline.csproj b/BackEnd/Timeline/Timeline.csproj
index 39412a65..5131cdb0 100644
--- a/Timeline/Timeline.csproj
+++ b/BackEnd/Timeline/Timeline.csproj
@@ -13,8 +13,6 @@
<TypeScriptToolsVersion>Latest</TypeScriptToolsVersion>
<SpaRoot>ClientApp\</SpaRoot>
- <DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
-
<Version>0.3.0</Version>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<IncludeOpenAPIAnalyzers>true</IncludeOpenAPIAnalyzers>
@@ -29,6 +27,9 @@
<Content Include="MockClientApp\index.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="$(SpaRoot)**" >
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
</ItemGroup>
<ItemGroup>
@@ -56,33 +57,6 @@
</ItemGroup>
<ItemGroup>
- <!-- Don't publish the SPA source files, but do show them in the project files list -->
- <Content Remove="$(SpaRoot)**" />
- <None Remove="$(SpaRoot)**" />
- <None Include="$(SpaRoot)**" Exclude="$(SpaRoot)node_modules\**" />
- </ItemGroup>
-
- <Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
- <!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
- <Exec WorkingDirectory="$(SpaRoot)" Command="yarn" StdOutEncoding="UTF-8" IgnoreStandardErrorWarningFormat="true" />
- <Exec WorkingDirectory="$(SpaRoot)" Command="yarn build" StdOutEncoding="UTF-8" IgnoreStandardErrorWarningFormat="true" />
-
- <!-- Include the newly-built files in the publish output -->
- <ItemGroup>
- <DistFiles Include="$(SpaRoot)dist\**" />
- <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
- <RelativePath>%(DistFiles.Identity)</RelativePath>
- <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
- <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
- </ResolvedFileToPublish>
- </ItemGroup>
- </Target>
-
- <ItemGroup>
- <None Remove="MockClientApp\index.html" />
- </ItemGroup>
-
- <ItemGroup>
<Compile Update="Resources\Authentication\AuthHandler.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
@@ -286,4 +260,4 @@
<LastGenOutput>UserTokenService.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
-</Project>
+</Project> \ No newline at end of file
diff --git a/Timeline/appsettings.Development.json b/BackEnd/Timeline/appsettings.Development.json
index a2880cbf..a2880cbf 100644
--- a/Timeline/appsettings.Development.json
+++ b/BackEnd/Timeline/appsettings.Development.json
diff --git a/Timeline/appsettings.json b/BackEnd/Timeline/appsettings.json
index 804ca43a..804ca43a 100644
--- a/Timeline/appsettings.json
+++ b/BackEnd/Timeline/appsettings.json
diff --git a/Timeline/ClientApp/src/app/http/mock/default-avatar.png b/BackEnd/Timeline/default-avatar.png
index 4086e1d2..4086e1d2 100644
--- a/Timeline/ClientApp/src/app/http/mock/default-avatar.png
+++ b/BackEnd/Timeline/default-avatar.png
Binary files differ
diff --git a/Timeline/packages.lock.json b/BackEnd/Timeline/packages.lock.json
index ed92c672..ed92c672 100644
--- a/Timeline/packages.lock.json
+++ b/BackEnd/Timeline/packages.lock.json
diff --git a/tools/convert-eol.py b/BackEnd/tools/convert-eol.py
index 3ea8ed7c..3ea8ed7c 100644
--- a/tools/convert-eol.py
+++ b/BackEnd/tools/convert-eol.py
diff --git a/Dockerfile b/Dockerfile
index 5be1d333..b9b958b0 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,10 +1,16 @@
-FROM crupest/timeline-build-env:latest AS build
-WORKDIR /timeline-app
-COPY . .
-RUN dotnet publish Timeline/Timeline.csproj --configuration Release --output ./Timeline/publish/ -r linux-x64 --self-contained false
-
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
-WORKDIR /app
-ENV ASPNETCORE_FORWARDEDHEADERS_ENABLED true
-COPY --from=build /timeline-app/Timeline/publish .
-ENTRYPOINT ["dotnet", "Timeline.dll"]
+FROM node:latest AS front-build
+WORKDIR /timeline-app
+COPY FrontEnd .
+RUN yarn build
+
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS back-build
+WORKDIR /timeline-app
+COPY BackEnd .
+COPY --from=front-build /timeline-app/dist /timeline-app/Timeline/ClientApp
+RUN dotnet publish Timeline/Timeline.csproj --configuration Release --output ./Timeline/publish/ -r linux-x64 --self-contained false
+
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
+WORKDIR /app
+ENV ASPNETCORE_FORWARDEDHEADERS_ENABLED true
+COPY --from=back-build /timeline-app/Timeline/publish .
+ENTRYPOINT ["dotnet", "Timeline.dll"]
diff --git a/Timeline/ClientApp/.babelrc b/FrontEnd/.babelrc
index 092f2f73..092f2f73 100644
--- a/Timeline/ClientApp/.babelrc
+++ b/FrontEnd/.babelrc
diff --git a/Timeline/ClientApp/.editorconfig b/FrontEnd/.editorconfig
index 779719e0..779719e0 100644
--- a/Timeline/ClientApp/.editorconfig
+++ b/FrontEnd/.editorconfig
diff --git a/Timeline/ClientApp/.eslintignore b/FrontEnd/.eslintignore
index 371b5fcb..f29f7466 100644
--- a/Timeline/ClientApp/.eslintignore
+++ b/FrontEnd/.eslintignore
@@ -3,3 +3,4 @@ node_modules
dist
webpack.*.js
.eslintrc.js
+postcss.config.js
diff --git a/Timeline/ClientApp/.eslintrc.js b/FrontEnd/.eslintrc.js
index 900489ed..900489ed 100644
--- a/Timeline/ClientApp/.eslintrc.js
+++ b/FrontEnd/.eslintrc.js
diff --git a/Timeline/ClientApp/.gitattributes b/FrontEnd/.gitattributes
index c1aa21ac..c1aa21ac 100644
--- a/Timeline/ClientApp/.gitattributes
+++ b/FrontEnd/.gitattributes
diff --git a/Timeline/ClientApp/.gitignore b/FrontEnd/.gitignore
index 1de0b58f..1de0b58f 100644
--- a/Timeline/ClientApp/.gitignore
+++ b/FrontEnd/.gitignore
diff --git a/Timeline/ClientApp/.vscode/extensions.json b/FrontEnd/.vscode/extensions.json
index be640996..be640996 100644
--- a/Timeline/ClientApp/.vscode/extensions.json
+++ b/FrontEnd/.vscode/extensions.json
diff --git a/Timeline/ClientApp/.vscode/preview.yml b/FrontEnd/.vscode/preview.yml
index eb5e452c..b2cf70af 100644
--- a/Timeline/ClientApp/.vscode/preview.yml
+++ b/FrontEnd/.vscode/preview.yml
@@ -1,10 +1,10 @@
-
-# .vscode/preview.yml
-autoOpen: false # 打开工作空间时是否自动开启所有应用的预览
-apps:
- - port: 3000 # 应用的端口
- run: yarn start:mock # 应用的启动命令
- root: . # 应用的启动目录
- name: timeline # 应用名称
- description: Timeline App # 应用描述
- autoOpen: false # 打开工作空间时是否自动开启预览(优先级高于根级 autoOpen)
+
+# .vscode/preview.yml
+autoOpen: false # 打开工作空间时是否自动开启所有应用的预览
+apps:
+ - port: 3000 # 应用的端口
+ run: yarn start:mock # 应用的启动命令
+ root: . # 应用的启动目录
+ name: timeline # 应用名称
+ description: Timeline App # 应用描述
+ autoOpen: false # 打开工作空间时是否自动开启预览(优先级高于根级 autoOpen)
diff --git a/Timeline/ClientApp/.vscode/settings.json b/FrontEnd/.vscode/settings.json
index 3db658ba..3db658ba 100644
--- a/Timeline/ClientApp/.vscode/settings.json
+++ b/FrontEnd/.vscode/settings.json
diff --git a/Timeline/ClientApp/.yarnrc.yml b/FrontEnd/.yarnrc.yml
index 2e4e43a7..2e4e43a7 100644
--- a/Timeline/ClientApp/.yarnrc.yml
+++ b/FrontEnd/.yarnrc.yml
diff --git a/Timeline/ClientApp/LICENSE b/FrontEnd/LICENSE
index 238cd2d9..238cd2d9 100644
--- a/Timeline/ClientApp/LICENSE
+++ b/FrontEnd/LICENSE
diff --git a/FrontEnd/package.json b/FrontEnd/package.json
new file mode 100644
index 00000000..d9136b6a
--- /dev/null
+++ b/FrontEnd/package.json
@@ -0,0 +1,113 @@
+{
+ "name": "timeline",
+ "version": "0.1.0",
+ "private": true,
+ "homepage": "https://crupest.xyz",
+ "keywords": [],
+ "description": "Timeline app.",
+ "dependencies": {
+ "axios": "^0.21.0",
+ "bootstrap": "^4.5.3",
+ "bootstrap-icons": "^1.1.0",
+ "classnames": "^2.2.6",
+ "clsx": "^1.1.1",
+ "core-js": "^3.6.5",
+ "i18next": "^19.8.3",
+ "i18next-browser-languagedetector": "^6.0.1",
+ "localforage": "^1.9.0",
+ "lodash": "^4.17.20",
+ "pepjs": "^0.5.2",
+ "react": "^17.0.1",
+ "react-bootstrap": "^1.4.0",
+ "react-dom": "^17.0.1",
+ "react-i18next": "^11.7.3",
+ "react-inlinesvg": "^2.1.1",
+ "react-responsive": "^8.1.0",
+ "react-router": "^5.2.0",
+ "react-router-bootstrap": "^0.25.0",
+ "react-router-dom": "^5.2.0",
+ "regenerator-runtime": "^0.13.7",
+ "rxjs": "^6.6.3",
+ "workbox-precaching": "^5.1.4",
+ "workbox-routing": "^5.1.4",
+ "workbox-strategies": "^5.1.4",
+ "workbox-window": "^5.1.4",
+ "xregexp": "^4.4.0"
+ },
+ "scripts": {
+ "start": "webpack serve --config ./webpack.config.dev.js",
+ "build": "webpack --config ./webpack.config.prod.js",
+ "lint": "eslint src/ --ext .js --ext .jsx --ext .ts --ext .tsx"
+ },
+ "browserslist": {
+ "production": [
+ ">0.2%",
+ "not dead",
+ "not op_mini all"
+ ],
+ "development": [
+ "last 1 chrome version",
+ "last 1 firefox version",
+ "last 1 safari version"
+ ]
+ },
+ "devDependencies": {
+ "@babel/core": "^7.12.3",
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
+ "@babel/plugin-proposal-decorators": "^7.12.1",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+ "@babel/plugin-proposal-optional-chaining": "^7.12.1",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/preset-env": "^7.12.1",
+ "@babel/preset-react": "^7.12.1",
+ "@babel/preset-typescript": "^7.12.1",
+ "@pmmmwh/react-refresh-webpack-plugin": "^0.4.2",
+ "@types/classnames": "^2.2.11",
+ "@types/lodash": "^4.14.164",
+ "@types/node": "^14.14.6",
+ "@types/react": "^16.9.55",
+ "@types/react-dom": "^16.9.9",
+ "@types/react-responsive": "^8.0.2",
+ "@types/react-router": "^5.1.8",
+ "@types/react-router-bootstrap": "^0.24.5",
+ "@types/react-router-dom": "^5.1.6",
+ "@types/webpack-env": "^1.15.3",
+ "@types/xregexp": "^4.3.0",
+ "@typescript-eslint/eslint-plugin": "^4.6.0",
+ "@typescript-eslint/parser": "^4.6.0",
+ "@yarnpkg/pnpify": "^2.3.3",
+ "babel-loader": "^8.1.0",
+ "babel-plugin-transform-builtin-extend": "^1.1.2",
+ "clean-webpack-plugin": "^3.0.0",
+ "copy-webpack-plugin": "^6.2.1",
+ "css-loader": "^5.0.0",
+ "eslint": "^7.12.1",
+ "eslint-config-prettier": "^6.15.0",
+ "eslint-plugin-import": "^2.22.1",
+ "eslint-plugin-prettier": "^3.1.4",
+ "eslint-plugin-react": "^7.21.5",
+ "eslint-plugin-react-hooks": "^4.2.0",
+ "file-loader": "^6.2.0",
+ "html-webpack-plugin": "^4.5.0",
+ "http-server": "^0.12.3",
+ "mini-css-extract-plugin": "^1.2.1",
+ "postcss": "^8.1.4",
+ "postcss-loader": "^4.0.4",
+ "postcss-preset-env": "^6.7.0",
+ "prettier": "^2.1.2",
+ "querystring-es3": "^0.2.1",
+ "react-refresh": "^0.9.0",
+ "sass": "^1.28.0",
+ "sass-loader": "^10.0.4",
+ "style-loader": "^2.0.0",
+ "ts-loader": "^8.0.7",
+ "type-fest": "^0.18.0",
+ "typescript": "^4.0.5",
+ "url-loader": "^4.1.1",
+ "webpack": "^5.3.2",
+ "webpack-chain": "^6.5.1",
+ "webpack-cli": "^4.1.0",
+ "webpack-dev-server": "^3.11.0",
+ "workbox-webpack-plugin": "^5.1.4"
+ }
+}
diff --git a/FrontEnd/postcss.config.js b/FrontEnd/postcss.config.js
new file mode 100644
index 00000000..74ee8155
--- /dev/null
+++ b/FrontEnd/postcss.config.js
@@ -0,0 +1,10 @@
+module.exports = {
+ plugins: [
+ [
+ "postcss-preset-env",
+ {
+ // Options
+ },
+ ],
+ ],
+};
diff --git a/Timeline/ClientApp/public/android-chrome-192x192.png b/FrontEnd/public/android-chrome-192x192.png
index da9b6b81..da9b6b81 100644
--- a/Timeline/ClientApp/public/android-chrome-192x192.png
+++ b/FrontEnd/public/android-chrome-192x192.png
Binary files differ
diff --git a/Timeline/ClientApp/public/android-chrome-512x512.png b/FrontEnd/public/android-chrome-512x512.png
index fa84e055..fa84e055 100644
--- a/Timeline/ClientApp/public/android-chrome-512x512.png
+++ b/FrontEnd/public/android-chrome-512x512.png
Binary files differ
diff --git a/Timeline/ClientApp/public/apple-touch-icon.png b/FrontEnd/public/apple-touch-icon.png
index d5a3fb45..d5a3fb45 100644
--- a/Timeline/ClientApp/public/apple-touch-icon.png
+++ b/FrontEnd/public/apple-touch-icon.png
Binary files differ
diff --git a/Timeline/ClientApp/public/browserconfig.xml b/FrontEnd/public/browserconfig.xml
index f2c89409..f2c89409 100644
--- a/Timeline/ClientApp/public/browserconfig.xml
+++ b/FrontEnd/public/browserconfig.xml
diff --git a/Timeline/ClientApp/public/favicon-16x16.png b/FrontEnd/public/favicon-16x16.png
index 6c978995..6c978995 100644
--- a/Timeline/ClientApp/public/favicon-16x16.png
+++ b/FrontEnd/public/favicon-16x16.png
Binary files differ
diff --git a/Timeline/ClientApp/public/favicon-32x32.png b/FrontEnd/public/favicon-32x32.png
index bbde902f..bbde902f 100644
--- a/Timeline/ClientApp/public/favicon-32x32.png
+++ b/FrontEnd/public/favicon-32x32.png
Binary files differ
diff --git a/Timeline/ClientApp/public/favicon.ico b/FrontEnd/public/favicon.ico
index d4cd3db6..d4cd3db6 100644
--- a/Timeline/ClientApp/public/favicon.ico
+++ b/FrontEnd/public/favicon.ico
Binary files differ
diff --git a/Timeline/ClientApp/public/mstile-144x144.png b/FrontEnd/public/mstile-144x144.png
index 61eaaf43..61eaaf43 100644
--- a/Timeline/ClientApp/public/mstile-144x144.png
+++ b/FrontEnd/public/mstile-144x144.png
Binary files differ
diff --git a/Timeline/ClientApp/public/mstile-150x150.png b/FrontEnd/public/mstile-150x150.png
index 85fa83ee..85fa83ee 100644
--- a/Timeline/ClientApp/public/mstile-150x150.png
+++ b/FrontEnd/public/mstile-150x150.png
Binary files differ
diff --git a/Timeline/ClientApp/public/mstile-310x150.png b/FrontEnd/public/mstile-310x150.png
index 41889953..41889953 100644
--- a/Timeline/ClientApp/public/mstile-310x150.png
+++ b/FrontEnd/public/mstile-310x150.png
Binary files differ
diff --git a/Timeline/ClientApp/public/mstile-310x310.png b/FrontEnd/public/mstile-310x310.png
index cddce02e..cddce02e 100644
--- a/Timeline/ClientApp/public/mstile-310x310.png
+++ b/FrontEnd/public/mstile-310x310.png
Binary files differ
diff --git a/Timeline/ClientApp/public/mstile-70x70.png b/FrontEnd/public/mstile-70x70.png
index 52f59d43..52f59d43 100644
--- a/Timeline/ClientApp/public/mstile-70x70.png
+++ b/FrontEnd/public/mstile-70x70.png
Binary files differ
diff --git a/Timeline/ClientApp/public/safari-pinned-tab.svg b/FrontEnd/public/safari-pinned-tab.svg
index e91f046a..e91f046a 100644
--- a/Timeline/ClientApp/public/safari-pinned-tab.svg
+++ b/FrontEnd/public/safari-pinned-tab.svg
diff --git a/Timeline/ClientApp/public/site.webmanifest b/FrontEnd/public/site.webmanifest
index 74f0901a..74f0901a 100644
--- a/Timeline/ClientApp/public/site.webmanifest
+++ b/FrontEnd/public/site.webmanifest
diff --git a/Timeline/ClientApp/sandbox.config.json b/FrontEnd/sandbox.config.json
index 42b540ce..90f99b70 100644
--- a/Timeline/ClientApp/sandbox.config.json
+++ b/FrontEnd/sandbox.config.json
@@ -1,11 +1,11 @@
-{
- "infiniteLoopProtection": true,
- "hardReloadOnChange": false,
- "view": "browser",
- "container": {
- "port": 3000,
- "startScript": "start:mock"
- },
- "port": 3000,
- "startScript": "start:mock"
-}
+{
+ "infiniteLoopProtection": true,
+ "hardReloadOnChange": false,
+ "view": "browser",
+ "container": {
+ "port": 3000,
+ "startScript": "start:mock"
+ },
+ "port": 3000,
+ "startScript": "start:mock"
+}
diff --git a/Timeline/ClientApp/src/app/App.tsx b/FrontEnd/src/app/App.tsx
index b68eddb6..4e53d4da 100644
--- a/Timeline/ClientApp/src/app/App.tsx
+++ b/FrontEnd/src/app/App.tsx
@@ -1,6 +1,5 @@
import React from "react";
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
-import { hot } from "react-hot-loader/root";
import AppBar from "./views/common/AppBar";
import LoadingPage from "./views/common/LoadingPage";
@@ -81,4 +80,4 @@ const App: React.FC = () => {
}
};
-export default hot(App);
+export default App;
diff --git a/Timeline/ClientApp/src/app/common.ts b/FrontEnd/src/app/common.ts
index 0a2d345f..0a2d345f 100644
--- a/Timeline/ClientApp/src/app/common.ts
+++ b/FrontEnd/src/app/common.ts
diff --git a/Timeline/ClientApp/src/app/http/common.ts b/FrontEnd/src/app/http/common.ts
index 54203d1a..54203d1a 100644
--- a/Timeline/ClientApp/src/app/http/common.ts
+++ b/FrontEnd/src/app/http/common.ts
diff --git a/Timeline/ClientApp/src/app/http/timeline.ts b/FrontEnd/src/app/http/timeline.ts
index a9511c64..eb7d5065 100644
--- a/Timeline/ClientApp/src/app/http/timeline.ts
+++ b/FrontEnd/src/app/http/timeline.ts
@@ -145,7 +145,7 @@ type RawTimelinePostContent =
interface RawTimelinePostInfo {
id: number;
- content: HttpTimelinePostContent;
+ content: RawTimelinePostContent;
time: string;
lastUpdated: string;
author: HttpUser;
diff --git a/Timeline/ClientApp/src/app/http/token.ts b/FrontEnd/src/app/http/token.ts
index ae0cf3f6..ae0cf3f6 100644
--- a/Timeline/ClientApp/src/app/http/token.ts
+++ b/FrontEnd/src/app/http/token.ts
diff --git a/Timeline/ClientApp/src/app/http/user.ts b/FrontEnd/src/app/http/user.ts
index a0a02cce..a0a02cce 100644
--- a/Timeline/ClientApp/src/app/http/user.ts
+++ b/FrontEnd/src/app/http/user.ts
diff --git a/Timeline/ClientApp/src/app/i18n.ts b/FrontEnd/src/app/i18n.ts
index cdced7bf..aeac1f1f 100644
--- a/Timeline/ClientApp/src/app/i18n.ts
+++ b/FrontEnd/src/app/i18n.ts
@@ -18,18 +18,10 @@ const backend: BackendModule = {
}
if (language === "en") {
- const res = (
- await import(
- /* webpackChunkName: "locales-en" */ "./locales/en/translation"
- )
- ).default;
+ const res = (await import("./locales/en/translation")).default;
success(res);
} else if (language === "zh-cn" || language === "zh") {
- const res = (
- await import(
- /* webpackChunkName: "locales-zh" */ "./locales/zh/translation"
- )
- ).default;
+ const res = (await import("./locales/zh/translation")).default;
success(res);
} else {
error(`Language ${language} is not supported.`);
diff --git a/Timeline/ClientApp/src/app/index.ejs b/FrontEnd/src/app/index.ejs
index 49306786..c2ff4182 100644
--- a/Timeline/ClientApp/src/app/index.ejs
+++ b/FrontEnd/src/app/index.ejs
@@ -1,29 +1,29 @@
-<!DOCTYPE html>
-<html lang="en">
- <head>
- <meta charset="utf-8" />
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
- <meta name="viewport" content="width=device-width,initial-scale=1.0" />
-
- <link rel="icon" href="/favicon.ico" />
- <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
- <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
- <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
- <link rel="manifest" href="/site.webmanifest" />
- <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5" />
- <meta name="msapplication-TileColor" content="#2d89ef" />
- <meta name="theme-color" content="#ffffff" />
-
- <title><%= htmlWebpackPlugin.options.title %></title>
- </head>
- <body>
- <noscript>
- <strong>
- We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work
- properly without JavaScript enabled. Please enable it to continue.
- </strong>
- </noscript>
- <div id="app"></div>
- <!-- built files will be auto injected -->
- </body>
-</html>
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0" />
+
+ <link rel="icon" href="/favicon.ico" />
+ <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
+ <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
+ <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
+ <link rel="manifest" href="/site.webmanifest" />
+ <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5" />
+ <meta name="msapplication-TileColor" content="#2d89ef" />
+ <meta name="theme-color" content="#ffffff" />
+
+ <title><%= htmlWebpackPlugin.options.title %></title>
+ </head>
+ <body>
+ <noscript>
+ <strong>
+ We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work
+ properly without JavaScript enabled. Please enable it to continue.
+ </strong>
+ </noscript>
+ <div id="app"></div>
+ <!-- built files will be auto injected -->
+ </body>
+</html>
diff --git a/Timeline/ClientApp/src/app/index.sass b/FrontEnd/src/app/index.sass
index 08e03bac..8e87e4ac 100644
--- a/Timeline/ClientApp/src/app/index.sass
+++ b/FrontEnd/src/app/index.sass
@@ -1,66 +1,66 @@
-@import '~bootstrap/scss/bootstrap'
-
-@import './views/common/common'
-@import './views/common/alert/alert'
-@import './views/home/home'
-@import './views/about/about'
-@import './views/login/login'
-@import './views/timeline-common/timeline-common'
-@import './views/timeline/timeline'
-@import './views/user/user'
-
-body
- margin: 0
-
-small
- line-height: 1.2
-
-.flex-fix-length
- flex-grow: 0
- flex-shrink: 0
-
-.position-lt
- left: 0
- top: 0
-
-.avatar
- width: 60px
- &.large
- width: 100px
- &.small
- width: 40px
-
-.mt-appbar
- margin-top: 56px
-
-.icon-button
- font-size: 1.4em
- &.large
- font-size: 1.6em
-
-.cursor-pointer
- cursor: pointer
-
-textarea
- resize: none
-
-.white-space-no-wrap
- white-space: nowrap
-
-.cru-card
- @extend .shadow
- @extend .border
- @extend .border-primary
- @extend .rounded
- @extend .bg-light
-
-.full-viewport-center-child
- position: fixed
- width: 100vw
- height: 100vh
- display: flex
- justify-content: center
- align-items: center
-
-.text-orange
- color: $orange
+@import '~bootstrap/scss/bootstrap'
+
+@import './views/common/common'
+@import './views/common/alert/alert'
+@import './views/home/home'
+@import './views/about/about'
+@import './views/login/login'
+@import './views/timeline-common/timeline-common'
+@import './views/timeline/timeline'
+@import './views/user/user'
+
+body
+ margin: 0
+
+small
+ line-height: 1.2
+
+.flex-fix-length
+ flex-grow: 0
+ flex-shrink: 0
+
+.position-lt
+ left: 0
+ top: 0
+
+.avatar
+ width: 60px
+ &.large
+ width: 100px
+ &.small
+ width: 40px
+
+.mt-appbar
+ margin-top: 56px
+
+.icon-button
+ font-size: 1.4em
+ &.large
+ font-size: 1.6em
+
+.cursor-pointer
+ cursor: pointer
+
+textarea
+ resize: none
+
+.white-space-no-wrap
+ white-space: nowrap
+
+.cru-card
+ @extend .shadow
+ @extend .border
+ @extend .border-primary
+ @extend .rounded
+ @extend .bg-light
+
+.full-viewport-center-child
+ position: fixed
+ width: 100vw
+ height: 100vh
+ display: flex
+ justify-content: center
+ align-items: center
+
+.text-orange
+ color: $orange
diff --git a/Timeline/ClientApp/src/app/index.tsx b/FrontEnd/src/app/index.tsx
index 00a75a4a..00a75a4a 100644
--- a/Timeline/ClientApp/src/app/index.tsx
+++ b/FrontEnd/src/app/index.tsx
diff --git a/Timeline/ClientApp/src/app/locales/en/translation.ts b/FrontEnd/src/app/locales/en/translation.ts
index c7f33d1e..c7f33d1e 100644
--- a/Timeline/ClientApp/src/app/locales/en/translation.ts
+++ b/FrontEnd/src/app/locales/en/translation.ts
diff --git a/Timeline/ClientApp/src/app/locales/scheme.ts b/FrontEnd/src/app/locales/scheme.ts
index 9e3534ac..9e3534ac 100644
--- a/Timeline/ClientApp/src/app/locales/scheme.ts
+++ b/FrontEnd/src/app/locales/scheme.ts
diff --git a/Timeline/ClientApp/src/app/locales/zh/translation.ts b/FrontEnd/src/app/locales/zh/translation.ts
index df316366..df316366 100644
--- a/Timeline/ClientApp/src/app/locales/zh/translation.ts
+++ b/FrontEnd/src/app/locales/zh/translation.ts
diff --git a/Timeline/ClientApp/src/app/service-worker.tsx b/FrontEnd/src/app/service-worker.tsx
index 3be54bc1..3be54bc1 100644
--- a/Timeline/ClientApp/src/app/service-worker.tsx
+++ b/FrontEnd/src/app/service-worker.tsx
diff --git a/Timeline/ClientApp/src/app/services/DataHub.ts b/FrontEnd/src/app/services/DataHub.ts
index 93a9b41f..4d618db6 100644
--- a/Timeline/ClientApp/src/app/services/DataHub.ts
+++ b/FrontEnd/src/app/services/DataHub.ts
@@ -22,7 +22,7 @@ export class DataLine<TData> {
}
) {
if (config.disableInitSync !== true) {
- setImmediate(() => void this.sync());
+ setTimeout(() => void this.sync());
}
}
diff --git a/Timeline/ClientApp/src/app/services/alert.ts b/FrontEnd/src/app/services/alert.ts
index e4c0e653..e4c0e653 100644
--- a/Timeline/ClientApp/src/app/services/alert.ts
+++ b/FrontEnd/src/app/services/alert.ts
diff --git a/Timeline/ClientApp/src/app/services/common.ts b/FrontEnd/src/app/services/common.ts
index 3bb6b9d7..3bb6b9d7 100644
--- a/Timeline/ClientApp/src/app/services/common.ts
+++ b/FrontEnd/src/app/services/common.ts
diff --git a/Timeline/ClientApp/src/app/services/timeline.ts b/FrontEnd/src/app/services/timeline.ts
index 9db76281..9db76281 100644
--- a/Timeline/ClientApp/src/app/services/timeline.ts
+++ b/FrontEnd/src/app/services/timeline.ts
diff --git a/Timeline/ClientApp/src/app/services/user.ts b/FrontEnd/src/app/services/user.ts
index f253fc19..f253fc19 100644
--- a/Timeline/ClientApp/src/app/services/user.ts
+++ b/FrontEnd/src/app/services/user.ts
diff --git a/Timeline/ClientApp/src/app/tsconfig.json b/FrontEnd/src/app/tsconfig.json
index 14e6327f..17ee69cb 100644
--- a/Timeline/ClientApp/src/app/tsconfig.json
+++ b/FrontEnd/src/app/tsconfig.json
@@ -1,13 +1,13 @@
-{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "lib": [
- "dom",
- "dom.iterable",
- "esnext"
- ]
- },
- "include": [
- "."
- ]
-}
+{
+ "extends": "../tsconfig.json",
+ "compilerOptions": {
+ "lib": [
+ "dom",
+ "dom.iterable",
+ "esnext"
+ ]
+ },
+ "include": [
+ "."
+ ]
+}
diff --git a/Timeline/ClientApp/src/app/typings.d.ts b/FrontEnd/src/app/typings.d.ts
index 34381682..34381682 100644
--- a/Timeline/ClientApp/src/app/typings.d.ts
+++ b/FrontEnd/src/app/typings.d.ts
diff --git a/Timeline/ClientApp/src/app/utilities/rxjs.ts b/FrontEnd/src/app/utilities/rxjs.ts
index 0730b899..0730b899 100644
--- a/Timeline/ClientApp/src/app/utilities/rxjs.ts
+++ b/FrontEnd/src/app/utilities/rxjs.ts
diff --git a/Timeline/ClientApp/src/app/utilities/url.ts b/FrontEnd/src/app/utilities/url.ts
index 17ead5b2..17ead5b2 100644
--- a/Timeline/ClientApp/src/app/utilities/url.ts
+++ b/FrontEnd/src/app/utilities/url.ts
diff --git a/Timeline/ClientApp/src/app/views/about/about.sass b/FrontEnd/src/app/views/about/about.sass
index 3b5840cd..f4d00cae 100644
--- a/Timeline/ClientApp/src/app/views/about/about.sass
+++ b/FrontEnd/src/app/views/about/about.sass
@@ -1,4 +1,4 @@
-.about-link-icon
- @extend .mx-2
- width: 1.2em
- height: 1.2em
+.about-link-icon
+ @extend .mx-2
+ width: 1.2em
+ height: 1.2em
diff --git a/Timeline/ClientApp/src/app/views/about/author-avatar.png b/FrontEnd/src/app/views/about/author-avatar.png
index d890d8d0..d890d8d0 100644
--- a/Timeline/ClientApp/src/app/views/about/author-avatar.png
+++ b/FrontEnd/src/app/views/about/author-avatar.png
Binary files differ
diff --git a/Timeline/ClientApp/src/app/views/about/github.png b/FrontEnd/src/app/views/about/github.png
index ea6ff545..ea6ff545 100644
--- a/Timeline/ClientApp/src/app/views/about/github.png
+++ b/FrontEnd/src/app/views/about/github.png
Binary files differ
diff --git a/Timeline/ClientApp/src/app/views/about/index.tsx b/FrontEnd/src/app/views/about/index.tsx
index e7771cec..e7771cec 100644
--- a/Timeline/ClientApp/src/app/views/about/index.tsx
+++ b/FrontEnd/src/app/views/about/index.tsx
diff --git a/Timeline/ClientApp/src/app/views/admin/Admin.tsx b/FrontEnd/src/app/views/admin/Admin.tsx
index 9c0250e7..9c0250e7 100644
--- a/Timeline/ClientApp/src/app/views/admin/Admin.tsx
+++ b/FrontEnd/src/app/views/admin/Admin.tsx
diff --git a/Timeline/ClientApp/src/app/views/admin/UserAdmin.tsx b/FrontEnd/src/app/views/admin/UserAdmin.tsx
index 18b77ca8..18b77ca8 100644
--- a/Timeline/ClientApp/src/app/views/admin/UserAdmin.tsx
+++ b/FrontEnd/src/app/views/admin/UserAdmin.tsx
diff --git a/Timeline/ClientApp/src/app/views/common/AppBar.tsx b/FrontEnd/src/app/views/common/AppBar.tsx
index ee4ead8f..ee4ead8f 100644
--- a/Timeline/ClientApp/src/app/views/common/AppBar.tsx
+++ b/FrontEnd/src/app/views/common/AppBar.tsx
diff --git a/Timeline/ClientApp/src/app/views/common/BlobImage.tsx b/FrontEnd/src/app/views/common/BlobImage.tsx
index 0dd25c52..0dd25c52 100644
--- a/Timeline/ClientApp/src/app/views/common/BlobImage.tsx
+++ b/FrontEnd/src/app/views/common/BlobImage.tsx
diff --git a/Timeline/ClientApp/src/app/views/common/ImageCropper.tsx b/FrontEnd/src/app/views/common/ImageCropper.tsx
index b9db8b99..b9db8b99 100644
--- a/Timeline/ClientApp/src/app/views/common/ImageCropper.tsx
+++ b/FrontEnd/src/app/views/common/ImageCropper.tsx
diff --git a/Timeline/ClientApp/src/app/views/common/LoadingButton.tsx b/FrontEnd/src/app/views/common/LoadingButton.tsx
index 154334a7..154334a7 100644
--- a/Timeline/ClientApp/src/app/views/common/LoadingButton.tsx
+++ b/FrontEnd/src/app/views/common/LoadingButton.tsx
diff --git a/Timeline/ClientApp/src/app/views/common/LoadingPage.tsx b/FrontEnd/src/app/views/common/LoadingPage.tsx
index 590fafa0..590fafa0 100644
--- a/Timeline/ClientApp/src/app/views/common/LoadingPage.tsx
+++ b/FrontEnd/src/app/views/common/LoadingPage.tsx
diff --git a/Timeline/ClientApp/src/app/views/common/OperationDialog.tsx b/FrontEnd/src/app/views/common/OperationDialog.tsx
index 841392a6..841392a6 100644
--- a/Timeline/ClientApp/src/app/views/common/OperationDialog.tsx
+++ b/FrontEnd/src/app/views/common/OperationDialog.tsx
diff --git a/Timeline/ClientApp/src/app/views/common/SearchInput.tsx b/FrontEnd/src/app/views/common/SearchInput.tsx
index 9833d515..9833d515 100644
--- a/Timeline/ClientApp/src/app/views/common/SearchInput.tsx
+++ b/FrontEnd/src/app/views/common/SearchInput.tsx
diff --git a/Timeline/ClientApp/src/app/views/common/TimelineLogo.tsx b/FrontEnd/src/app/views/common/TimelineLogo.tsx
index 27d188fc..27d188fc 100644
--- a/Timeline/ClientApp/src/app/views/common/TimelineLogo.tsx
+++ b/FrontEnd/src/app/views/common/TimelineLogo.tsx
diff --git a/Timeline/ClientApp/src/app/views/common/UserTimelineLogo.tsx b/FrontEnd/src/app/views/common/UserTimelineLogo.tsx
index 29f6a69f..29f6a69f 100644
--- a/Timeline/ClientApp/src/app/views/common/UserTimelineLogo.tsx
+++ b/FrontEnd/src/app/views/common/UserTimelineLogo.tsx
diff --git a/Timeline/ClientApp/src/app/views/common/alert/AlertHost.tsx b/FrontEnd/src/app/views/common/alert/AlertHost.tsx
index c74f18e2..c74f18e2 100644
--- a/Timeline/ClientApp/src/app/views/common/alert/AlertHost.tsx
+++ b/FrontEnd/src/app/views/common/alert/AlertHost.tsx
diff --git a/Timeline/ClientApp/src/app/views/common/alert/alert.sass b/FrontEnd/src/app/views/common/alert/alert.sass
index 5b6e65c2..c3560b87 100644
--- a/Timeline/ClientApp/src/app/views/common/alert/alert.sass
+++ b/FrontEnd/src/app/views/common/alert/alert.sass
@@ -1,15 +1,15 @@
-.alert-container
- position: fixed
- z-index: $zindex-popover
-
-@include media-breakpoint-up(sm)
- .alert-container
- bottom: 0
- right: 0
-
-@include media-breakpoint-down(sm)
- .alert-container
- bottom: 0
- right: 0
- left: 0
- text-align: center
+.alert-container
+ position: fixed
+ z-index: $zindex-popover
+
+@include media-breakpoint-up(sm)
+ .alert-container
+ bottom: 0
+ right: 0
+
+@include media-breakpoint-down(sm)
+ .alert-container
+ bottom: 0
+ right: 0
+ left: 0
+ text-align: center
diff --git a/Timeline/ClientApp/src/app/views/common/common.sass b/FrontEnd/src/app/views/common/common.sass
index 15d34d7c..78e6fd14 100644
--- a/Timeline/ClientApp/src/app/views/common/common.sass
+++ b/FrontEnd/src/app/views/common/common.sass
@@ -1,33 +1,33 @@
-.image-cropper-container
- position: relative
- box-sizing: border-box
- user-select: none
-
-.image-cropper-container img
- position: absolute
- left: 0
- top: 0
- width: 100%
- height: 100%
-
-.image-cropper-mask-container
- position: absolute
- left: 0
- top: 0
- right: 0
- bottom: 0
- overflow: hidden
-
-.image-cropper-mask
- position: absolute
- box-shadow: 0 0 0 10000px rgba(255, 255, 255, 80%)
- touch-action: none
-
-.image-cropper-handler
- position: absolute
- width: 26px
- height: 26px
- border: black solid 2px
- border-radius: 50%
- background: white
- touch-action: none
+.image-cropper-container
+ position: relative
+ box-sizing: border-box
+ user-select: none
+
+.image-cropper-container img
+ position: absolute
+ left: 0
+ top: 0
+ width: 100%
+ height: 100%
+
+.image-cropper-mask-container
+ position: absolute
+ left: 0
+ top: 0
+ right: 0
+ bottom: 0
+ overflow: hidden
+
+.image-cropper-mask
+ position: absolute
+ box-shadow: 0 0 0 10000px rgba(255, 255, 255, 80%)
+ touch-action: none
+
+.image-cropper-handler
+ position: absolute
+ width: 26px
+ height: 26px
+ border: black solid 2px
+ border-radius: 50%
+ background: white
+ touch-action: none
diff --git a/Timeline/ClientApp/src/app/views/home/BoardWithUser.tsx b/FrontEnd/src/app/views/home/BoardWithUser.tsx
index dcd39cbe..dcd39cbe 100644
--- a/Timeline/ClientApp/src/app/views/home/BoardWithUser.tsx
+++ b/FrontEnd/src/app/views/home/BoardWithUser.tsx
diff --git a/Timeline/ClientApp/src/app/views/home/BoardWithoutUser.tsx b/FrontEnd/src/app/views/home/BoardWithoutUser.tsx
index ebfddb50..ebfddb50 100644
--- a/Timeline/ClientApp/src/app/views/home/BoardWithoutUser.tsx
+++ b/FrontEnd/src/app/views/home/BoardWithoutUser.tsx
diff --git a/Timeline/ClientApp/src/app/views/home/OfflineBoard.tsx b/FrontEnd/src/app/views/home/OfflineBoard.tsx
index fc05bd74..fc05bd74 100644
--- a/Timeline/ClientApp/src/app/views/home/OfflineBoard.tsx
+++ b/FrontEnd/src/app/views/home/OfflineBoard.tsx
diff --git a/Timeline/ClientApp/src/app/views/home/TimelineBoard.tsx b/FrontEnd/src/app/views/home/TimelineBoard.tsx
index a3d176e1..a3d176e1 100644
--- a/Timeline/ClientApp/src/app/views/home/TimelineBoard.tsx
+++ b/FrontEnd/src/app/views/home/TimelineBoard.tsx
diff --git a/Timeline/ClientApp/src/app/views/home/TimelineCreateDialog.tsx b/FrontEnd/src/app/views/home/TimelineCreateDialog.tsx
index d9467719..d9467719 100644
--- a/Timeline/ClientApp/src/app/views/home/TimelineCreateDialog.tsx
+++ b/FrontEnd/src/app/views/home/TimelineCreateDialog.tsx
diff --git a/Timeline/ClientApp/src/app/views/home/home.sass b/FrontEnd/src/app/views/home/home.sass
index f5d6ffc3..28a2e5f3 100644
--- a/Timeline/ClientApp/src/app/views/home/home.sass
+++ b/FrontEnd/src/app/views/home/home.sass
@@ -1,13 +1,13 @@
-.timeline-board-item
- font-size: 1.1em
- @extend .my-2
- .icon
- height: 1.3em
- @extend .mr-2
-
-.timeline-board
- @extend .cru-card
- @extend .d-flex
- @extend .flex-column
- @extend .p-3
- min-height: 200px
+.timeline-board-item
+ font-size: 1.1em
+ @extend .my-2
+ .icon
+ height: 1.3em
+ @extend .mr-2
+
+.timeline-board
+ @extend .cru-card
+ @extend .d-flex
+ @extend .flex-column
+ @extend .p-3
+ min-height: 200px
diff --git a/Timeline/ClientApp/src/app/views/home/index.tsx b/FrontEnd/src/app/views/home/index.tsx
index 760adcea..760adcea 100644
--- a/Timeline/ClientApp/src/app/views/home/index.tsx
+++ b/FrontEnd/src/app/views/home/index.tsx
diff --git a/Timeline/ClientApp/src/app/views/login/index.tsx b/FrontEnd/src/app/views/login/index.tsx
index 265c2172..61b9a525 100644
--- a/Timeline/ClientApp/src/app/views/login/index.tsx
+++ b/FrontEnd/src/app/views/login/index.tsx
@@ -124,7 +124,7 @@ const LoginPage: React.FC = (_) => {
type="checkbox"
checked={rememberMe}
onChange={(e) => {
- setRememberMe(e.target.checked);
+ setRememberMe(e.currentTarget.checked);
}}
label={t("user.rememberMe")}
/>
diff --git a/Timeline/ClientApp/src/app/views/login/login.sass b/FrontEnd/src/app/views/login/login.sass
index 0bf385f5..0bf385f5 100644
--- a/Timeline/ClientApp/src/app/views/login/login.sass
+++ b/FrontEnd/src/app/views/login/login.sass
diff --git a/Timeline/ClientApp/src/app/views/settings/index.tsx b/FrontEnd/src/app/views/settings/index.tsx
index 964e7442..964e7442 100644
--- a/Timeline/ClientApp/src/app/views/settings/index.tsx
+++ b/FrontEnd/src/app/views/settings/index.tsx
diff --git a/Timeline/ClientApp/src/app/views/timeline-common/CollapseButton.tsx b/FrontEnd/src/app/views/timeline-common/CollapseButton.tsx
index 3c52150f..3c52150f 100644
--- a/Timeline/ClientApp/src/app/views/timeline-common/CollapseButton.tsx
+++ b/FrontEnd/src/app/views/timeline-common/CollapseButton.tsx
diff --git a/Timeline/ClientApp/src/app/views/timeline-common/InfoCardTemplate.tsx b/FrontEnd/src/app/views/timeline-common/InfoCardTemplate.tsx
index a8de20aa..a8de20aa 100644
--- a/Timeline/ClientApp/src/app/views/timeline-common/InfoCardTemplate.tsx
+++ b/FrontEnd/src/app/views/timeline-common/InfoCardTemplate.tsx
diff --git a/Timeline/ClientApp/src/app/views/timeline-common/SyncStatusBadge.tsx b/FrontEnd/src/app/views/timeline-common/SyncStatusBadge.tsx
index e67cfb43..e67cfb43 100644
--- a/Timeline/ClientApp/src/app/views/timeline-common/SyncStatusBadge.tsx
+++ b/FrontEnd/src/app/views/timeline-common/SyncStatusBadge.tsx
diff --git a/Timeline/ClientApp/src/app/views/timeline-common/Timeline.tsx b/FrontEnd/src/app/views/timeline-common/Timeline.tsx
index fd051d45..fd051d45 100644
--- a/Timeline/ClientApp/src/app/views/timeline-common/Timeline.tsx
+++ b/FrontEnd/src/app/views/timeline-common/Timeline.tsx
diff --git a/Timeline/ClientApp/src/app/views/timeline-common/TimelineItem.tsx b/FrontEnd/src/app/views/timeline-common/TimelineItem.tsx
index 327b6833..4db23371 100644
--- a/Timeline/ClientApp/src/app/views/timeline-common/TimelineItem.tsx
+++ b/FrontEnd/src/app/views/timeline-common/TimelineItem.tsx
@@ -105,7 +105,7 @@ const TimelineItem: React.FC<TimelineItemProps> = (props) => {
<Svg
src={chevronDownIcon}
className="text-info icon-button"
- onClick={(e: Event) => {
+ onClick={(e) => {
more.toggle();
e.stopPropagation();
}}
@@ -148,7 +148,7 @@ const TimelineItem: React.FC<TimelineItemProps> = (props) => {
<Svg
src={trashIcon}
className="text-danger icon-button large"
- onClick={(e: Event) => {
+ onClick={(e) => {
toggleDeleteDialog();
e.stopPropagation();
}}
diff --git a/Timeline/ClientApp/src/app/views/timeline-common/TimelineMember.tsx b/FrontEnd/src/app/views/timeline-common/TimelineMember.tsx
index 67a8543a..67a8543a 100644
--- a/Timeline/ClientApp/src/app/views/timeline-common/TimelineMember.tsx
+++ b/FrontEnd/src/app/views/timeline-common/TimelineMember.tsx
diff --git a/Timeline/ClientApp/src/app/views/timeline-common/TimelinePageTemplate.tsx b/FrontEnd/src/app/views/timeline-common/TimelinePageTemplate.tsx
index d5c91622..d5c91622 100644
--- a/Timeline/ClientApp/src/app/views/timeline-common/TimelinePageTemplate.tsx
+++ b/FrontEnd/src/app/views/timeline-common/TimelinePageTemplate.tsx
diff --git a/Timeline/ClientApp/src/app/views/timeline-common/TimelinePageTemplateUI.tsx b/FrontEnd/src/app/views/timeline-common/TimelinePageTemplateUI.tsx
index 6c2c43c1..6c2c43c1 100644
--- a/Timeline/ClientApp/src/app/views/timeline-common/TimelinePageTemplateUI.tsx
+++ b/FrontEnd/src/app/views/timeline-common/TimelinePageTemplateUI.tsx
diff --git a/Timeline/ClientApp/src/app/views/timeline-common/TimelinePostEdit.tsx b/FrontEnd/src/app/views/timeline-common/TimelinePostEdit.tsx
index dfa2f879..dfa2f879 100644
--- a/Timeline/ClientApp/src/app/views/timeline-common/TimelinePostEdit.tsx
+++ b/FrontEnd/src/app/views/timeline-common/TimelinePostEdit.tsx
diff --git a/Timeline/ClientApp/src/app/views/timeline-common/TimelinePropertyChangeDialog.tsx b/FrontEnd/src/app/views/timeline-common/TimelinePropertyChangeDialog.tsx
index 87638f31..87638f31 100644
--- a/Timeline/ClientApp/src/app/views/timeline-common/TimelinePropertyChangeDialog.tsx
+++ b/FrontEnd/src/app/views/timeline-common/TimelinePropertyChangeDialog.tsx
diff --git a/Timeline/ClientApp/src/app/views/timeline-common/TimelineTop.tsx b/FrontEnd/src/app/views/timeline-common/TimelineTop.tsx
index 93a2a32c..93a2a32c 100644
--- a/Timeline/ClientApp/src/app/views/timeline-common/TimelineTop.tsx
+++ b/FrontEnd/src/app/views/timeline-common/TimelineTop.tsx
diff --git a/Timeline/ClientApp/src/app/views/timeline-common/timeline-common.sass b/FrontEnd/src/app/views/timeline-common/timeline-common.sass
index 4151bfcc..4151bfcc 100644
--- a/Timeline/ClientApp/src/app/views/timeline-common/timeline-common.sass
+++ b/FrontEnd/src/app/views/timeline-common/timeline-common.sass
diff --git a/Timeline/ClientApp/src/app/views/timeline/TimelineDeleteDialog.tsx b/FrontEnd/src/app/views/timeline/TimelineDeleteDialog.tsx
index 894b8195..894b8195 100644
--- a/Timeline/ClientApp/src/app/views/timeline/TimelineDeleteDialog.tsx
+++ b/FrontEnd/src/app/views/timeline/TimelineDeleteDialog.tsx
diff --git a/Timeline/ClientApp/src/app/views/timeline/TimelineInfoCard.tsx b/FrontEnd/src/app/views/timeline/TimelineInfoCard.tsx
index 2d787709..2d787709 100644
--- a/Timeline/ClientApp/src/app/views/timeline/TimelineInfoCard.tsx
+++ b/FrontEnd/src/app/views/timeline/TimelineInfoCard.tsx
diff --git a/Timeline/ClientApp/src/app/views/timeline/TimelinePageUI.tsx b/FrontEnd/src/app/views/timeline/TimelinePageUI.tsx
index 67ea699e..67ea699e 100644
--- a/Timeline/ClientApp/src/app/views/timeline/TimelinePageUI.tsx
+++ b/FrontEnd/src/app/views/timeline/TimelinePageUI.tsx
diff --git a/Timeline/ClientApp/src/app/views/timeline/index.tsx b/FrontEnd/src/app/views/timeline/index.tsx
index 225a1a59..225a1a59 100644
--- a/Timeline/ClientApp/src/app/views/timeline/index.tsx
+++ b/FrontEnd/src/app/views/timeline/index.tsx
diff --git a/Timeline/ClientApp/src/app/views/timeline/timeline.sass b/FrontEnd/src/app/views/timeline/timeline.sass
index e69de29b..e69de29b 100644
--- a/Timeline/ClientApp/src/app/views/timeline/timeline.sass
+++ b/FrontEnd/src/app/views/timeline/timeline.sass
diff --git a/Timeline/ClientApp/src/app/views/user/ChangeAvatarDialog.tsx b/FrontEnd/src/app/views/user/ChangeAvatarDialog.tsx
index ffa2218b..ffa2218b 100644
--- a/Timeline/ClientApp/src/app/views/user/ChangeAvatarDialog.tsx
+++ b/FrontEnd/src/app/views/user/ChangeAvatarDialog.tsx
diff --git a/Timeline/ClientApp/src/app/views/user/ChangeNicknameDialog.tsx b/FrontEnd/src/app/views/user/ChangeNicknameDialog.tsx
index 251b18c5..251b18c5 100644
--- a/Timeline/ClientApp/src/app/views/user/ChangeNicknameDialog.tsx
+++ b/FrontEnd/src/app/views/user/ChangeNicknameDialog.tsx
diff --git a/Timeline/ClientApp/src/app/views/user/UserInfoCard.tsx b/FrontEnd/src/app/views/user/UserInfoCard.tsx
index 888fb18a..888fb18a 100644
--- a/Timeline/ClientApp/src/app/views/user/UserInfoCard.tsx
+++ b/FrontEnd/src/app/views/user/UserInfoCard.tsx
diff --git a/Timeline/ClientApp/src/app/views/user/UserPageUI.tsx b/FrontEnd/src/app/views/user/UserPageUI.tsx
index d405399c..d405399c 100644
--- a/Timeline/ClientApp/src/app/views/user/UserPageUI.tsx
+++ b/FrontEnd/src/app/views/user/UserPageUI.tsx
diff --git a/Timeline/ClientApp/src/app/views/user/index.tsx b/FrontEnd/src/app/views/user/index.tsx
index 7c0b1563..7c0b1563 100644
--- a/Timeline/ClientApp/src/app/views/user/index.tsx
+++ b/FrontEnd/src/app/views/user/index.tsx
diff --git a/Timeline/ClientApp/src/app/views/user/user.sass b/FrontEnd/src/app/views/user/user.sass
index 5b7fcae7..63a28e05 100644
--- a/Timeline/ClientApp/src/app/views/user/user.sass
+++ b/FrontEnd/src/app/views/user/user.sass
@@ -1,7 +1,7 @@
-.change-avatar-cropper-row
- max-height: 400px
-
-.change-avatar-img
- min-width: 50%
- max-width: 100%
- max-height: 400px
+.change-avatar-cropper-row
+ max-height: 400px
+
+.change-avatar-img
+ min-width: 50%
+ max-width: 100%
+ max-height: 400px
diff --git a/Timeline/ClientApp/src/sw/sw.ts b/FrontEnd/src/sw/sw.ts
index d6202f36..d6202f36 100644
--- a/Timeline/ClientApp/src/sw/sw.ts
+++ b/FrontEnd/src/sw/sw.ts
diff --git a/Timeline/ClientApp/src/sw/tsconfig.json b/FrontEnd/src/sw/tsconfig.json
index aac99e59..71fc0bcd 100644
--- a/Timeline/ClientApp/src/sw/tsconfig.json
+++ b/FrontEnd/src/sw/tsconfig.json
@@ -1,12 +1,12 @@
-{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "lib": [
- "esnext",
- "webworker"
- ]
- },
- "include": [
- "."
- ]
-}
+{
+ "extends": "../tsconfig.json",
+ "compilerOptions": {
+ "lib": [
+ "esnext",
+ "webworker"
+ ]
+ },
+ "include": [
+ "."
+ ]
+}
diff --git a/Timeline/ClientApp/src/tsconfig.json b/FrontEnd/src/tsconfig.json
index 6937be63..1855f5cd 100644
--- a/Timeline/ClientApp/src/tsconfig.json
+++ b/FrontEnd/src/tsconfig.json
@@ -1,23 +1,23 @@
-{
- "compilerOptions": {
- "target": "esnext",
- "allowJs": true,
- "skipLibCheck": true,
- "esModuleInterop": true,
- "allowSyntheticDefaultImports": true,
- "strict": true,
- "forceConsistentCasingInFileNames": true,
- "module": "esnext",
- "moduleResolution": "node",
- "resolveJsonModule": true,
- "isolatedModules": true,
- "jsx": "preserve",
- "sourceMap": true,
- "baseUrl": "./",
- "paths": {
- "@/*": [
- "app/*"
- ]
- }
- }
-}
+{
+ "compilerOptions": {
+ "target": "esnext",
+ "allowJs": true,
+ "skipLibCheck": true,
+ "esModuleInterop": true,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "sourceMap": true,
+ "baseUrl": "./",
+ "paths": {
+ "@/*": [
+ "app/*"
+ ]
+ }
+ }
+}
diff --git a/Timeline/ClientApp/webpack.common.js b/FrontEnd/webpack.common.js
index e13881cb..3779003e 100644
--- a/Timeline/ClientApp/webpack.common.js
+++ b/FrontEnd/webpack.common.js
@@ -1,6 +1,5 @@
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
-const PnpWebpackPlugin = require("pnp-webpack-plugin");
const postcssPresetEnv = require("postcss-preset-env");
const Config = require("webpack-chain");
@@ -37,9 +36,6 @@ config.module
.end()
.use("postcss")
.loader("postcss-loader")
- .options({
- plugins: () => [postcssPresetEnv(/* pluginOptions */)],
- })
.end();
config.module
@@ -50,9 +46,6 @@ config.module
.end()
.use("postcss")
.loader("postcss-loader")
- .options({
- plugins: () => [postcssPresetEnv(/* pluginOptions */)],
- })
.end()
.use("sass")
.loader("sass-loader")
@@ -73,18 +66,14 @@ config.resolve.extensions
.add(".jsx")
.add(".ts")
.add(".tsx")
- .end()
- .plugin("pnp")
- .use(PnpWebpackPlugin);
+ .end();
config.resolve.alias.set("@", path.resolve(__dirname, "src/app"));
-config.resolveLoader.plugin("pnp").use(PnpWebpackPlugin.moduleLoader(module));
-
config.output
.path(path.resolve(__dirname, "dist/"))
- .filename("[name].[hash].js")
- .chunkFilename("[name].[hash].js")
+ .filename("[name].[contenthash].js")
+ .chunkFilename("[name].[contenthash].js")
.publicPath("/");
config.plugin("html").use(HtmlWebpackPlugin, [
diff --git a/Timeline/ClientApp/webpack.config.dev.js b/FrontEnd/webpack.config.dev.js
index fea5a2c5..937ab3fb 100644
--- a/Timeline/ClientApp/webpack.config.dev.js
+++ b/FrontEnd/webpack.config.dev.js
@@ -1,24 +1,23 @@
const path = require("path");
const webpack = require("webpack");
+const ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin");
const config = require("./webpack.common");
config.mode("development");
-config.entry("index").add("react-hot-loader/patch");
-
config.module
.rule("ts")
.use("babel")
.options({
- plugins: ["react-hot-loader/babel"],
+ plugins: ["react-refresh/babel"],
});
config.module
.rule("js")
.use("babel")
.options({
- plugins: ["react-hot-loader/babel"],
+ plugins: ["react-refresh/babel"],
});
config.module
@@ -37,24 +36,18 @@ config.module
config.devtool("eval-cheap-module-source-map");
-config.resolve.alias.set("react-dom", "@hot-loader/react-dom");
+config.resolve.set("fallback", {
+ querystring: require.resolve("querystring-es3"),
+});
config.devServer
.contentBase(path.resolve(__dirname, "public/"))
.host("0.0.0.0")
.port(3000)
.historyApiFallback(true)
- .hotOnly(true)
- .allowedHosts.add(".myide.io");
+ .hotOnly(true);
config.plugin("hot").use(webpack.HotModuleReplacementPlugin);
+config.plugin("react-refresh").use(new ReactRefreshWebpackPlugin());
-module.exports = (env) => {
- if (env && env.TIMELINE_USE_MOCK_BACKEND) {
- config
- .entry("index")
- .add(path.join(__dirname, "src/app/http/mock/install.ts"));
- }
-
- return config.toConfig();
-};
+module.exports = config.toConfig();
diff --git a/Timeline/ClientApp/webpack.config.prod.js b/FrontEnd/webpack.config.prod.js
index 188cb940..188cb940 100644
--- a/Timeline/ClientApp/webpack.config.prod.js
+++ b/FrontEnd/webpack.config.prod.js
diff --git a/README.md b/README.md
index f23c308d..b0783b83 100644
--- a/README.md
+++ b/README.md
@@ -4,9 +4,9 @@
This is the first web app of [me](https://github.com/crupest).
-The front-end, located [here](https://github.com/crupest/Timeline/tree/master/Timeline/ClientApp), is written in [Typescript](https://www.typescriptlang.org/) and built with [React](https://reactjs.org/).
+The [front-end](https://github.com/crupest/Timeline/tree/master/FrontEnd), is written in [Typescript](https://www.typescriptlang.org/) and built with [React](https://reactjs.org/).
-The back-end is written in C# and built with [ASP.NET Core](https://github.com/dotnet/aspnetcore).
+The [back-end](https://github.com/crupest/Timeline/tree/master/BackEnd) is written in C# and built with [ASP.NET Core](https://github.com/dotnet/aspnetcore).
The final product is hosting on my [Tencent Cloud](https://cloud.tencent.com/) Cloud Virtual Machine on https://crupest.xyz .
diff --git a/Timeline/ClientApp/package.json b/Timeline/ClientApp/package.json
deleted file mode 100644
index 5ae6a608..00000000
--- a/Timeline/ClientApp/package.json
+++ /dev/null
@@ -1,115 +0,0 @@
-{
- "name": "timeline",
- "version": "0.1.0",
- "private": true,
- "homepage": "https://crupest.xyz",
- "keywords": [],
- "description": "Timeline app.",
- "dependencies": {
- "axios": "^0.20.0",
- "bootstrap": "^4.5.2",
- "bootstrap-icons": "^1.0.0",
- "classnames": "^2.2.6",
- "clsx": "^1.1.1",
- "core-js": "^3.6.5",
- "i18next": "^19.7.0",
- "i18next-browser-languagedetector": "^6.0.1",
- "localforage": "^1.9.0",
- "lodash": "^4.17.20",
- "pepjs": "^0.5.2",
- "react": "^16.13.1",
- "react-bootstrap": "^1.3.0",
- "react-dom": "^16.13.1",
- "react-hot-loader": "^4.12.21",
- "react-i18next": "^11.7.2",
- "react-inlinesvg": "^2.0.0",
- "react-responsive": "^8.1.0",
- "react-router": "^5.2.0",
- "react-router-bootstrap": "^0.25.0",
- "react-router-dom": "^5.2.0",
- "regenerator-runtime": "^0.13.7",
- "rxjs": "^6.6.2",
- "workbox-precaching": "^5.1.3",
- "workbox-routing": "^5.1.3",
- "workbox-strategies": "^5.1.3",
- "workbox-window": "^5.1.3",
- "xregexp": "^4.3.0"
- },
- "scripts": {
- "start": "webpack-dev-server --config ./webpack.config.dev.js",
- "start:mock": "webpack-dev-server --config ./webpack.config.dev.js --env.TIMELINE_USE_MOCK_BACKEND",
- "build": "webpack --config ./webpack.config.prod.js",
- "lint": "eslint src/ --ext .js --ext .jsx --ext .ts --ext .tsx"
- },
- "browserslist": {
- "production": [
- ">0.2%",
- "not dead",
- "not op_mini all"
- ],
- "development": [
- "last 1 chrome version",
- "last 1 firefox version",
- "last 1 safari version"
- ]
- },
- "devDependencies": {
- "@babel/core": "^7.11.4",
- "@babel/plugin-proposal-class-properties": "^7.10.4",
- "@babel/plugin-proposal-decorators": "^7.10.5",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4",
- "@babel/plugin-proposal-optional-chaining": "^7.11.0",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/preset-env": "^7.11.0",
- "@babel/preset-react": "^7.10.4",
- "@babel/preset-typescript": "^7.10.4",
- "@hot-loader/react-dom": "^16.13.0",
- "@types/classnames": "^2.2.10",
- "@types/crypto-js": "^3.1.47",
- "@types/lodash": "^4.14.161",
- "@types/node": "^14.6.2",
- "@types/react": "^16.9.49",
- "@types/react-dom": "^16.9.8",
- "@types/react-responsive": "^8.0.2",
- "@types/react-router": "^5.1.8",
- "@types/react-router-bootstrap": "^0.24.5",
- "@types/react-router-dom": "^5.1.5",
- "@types/webpack-env": "^1.15.2",
- "@types/xregexp": "^4.3.0",
- "@typescript-eslint/eslint-plugin": "^3.10.1",
- "@typescript-eslint/parser": "^3.10.1",
- "@yarnpkg/pnpify": "^2.2.1",
- "babel-loader": "^8.1.0",
- "babel-plugin-transform-builtin-extend": "^1.1.2",
- "clean-webpack-plugin": "^3.0.0",
- "copy-webpack-plugin": "^6.1.0",
- "crypto-js": "^4.0.0",
- "css-loader": "^4.2.2",
- "eslint": "^7.7.0",
- "eslint-config-prettier": "^6.11.0",
- "eslint-import-resolver-webpack": "^0.12.2",
- "eslint-plugin-import": "^2.22.0",
- "eslint-plugin-prettier": "^3.1.4",
- "eslint-plugin-react": "^7.20.6",
- "eslint-plugin-react-hooks": "^4.1.0",
- "file-loader": "^6.1.0",
- "html-webpack-plugin": "^4.4.1",
- "http-server": "^0.12.3",
- "mini-css-extract-plugin": "^0.11.0",
- "pnp-webpack-plugin": "^1.6.4",
- "postcss-loader": "^3.0.0",
- "postcss-preset-env": "^6.7.0",
- "prettier": "^2.1.1",
- "sass": "^1.26.10",
- "sass-loader": "^10.0.1",
- "style-loader": "^1.2.1",
- "ts-loader": "^8.0.3",
- "typescript": "^4.0.2",
- "url-loader": "^4.1.0",
- "webpack": "^4.44.1",
- "webpack-chain": "^6.5.1",
- "webpack-cli": "^3.3.12",
- "webpack-dev-server": "^3.11.0",
- "workbox-webpack-plugin": "^5.1.3"
- }
-}
diff --git a/Timeline/ClientApp/src/app/http/mock/common.ts b/Timeline/ClientApp/src/app/http/mock/common.ts
deleted file mode 100644
index 787d81bd..00000000
--- a/Timeline/ClientApp/src/app/http/mock/common.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-import localforage from "localforage";
-import { SHA1 } from "crypto-js";
-
-import { HttpNetworkError } from "../common";
-
-export const mockStorage = localforage.createInstance({
- name: "mock-backend",
- description: "Database for mock back end.",
- driver: localforage.INDEXEDDB,
-});
-
-export async function sha1(data: Blob): Promise<string> {
- const s = await new Promise<string>((resolve) => {
- const fileReader = new FileReader();
- fileReader.readAsBinaryString(data);
- fileReader.onload = () => {
- resolve(fileReader.result as string);
- };
- });
-
- return SHA1(s).toString();
-}
-
-const disableNetworkKey = "mockServer.disableNetwork";
-const networkLatencyKey = "mockServer.networkLatency";
-
-let disableNetwork: boolean =
- localStorage.getItem(disableNetworkKey) === "true" ? true : false;
-
-const savedNetworkLatency = localStorage.getItem(networkLatencyKey);
-
-let networkLatency: number | null =
- savedNetworkLatency != null ? Number(savedNetworkLatency) : null;
-
-Object.defineProperty(window, "disableNetwork", {
- get: () => disableNetwork,
- set: (value) => {
- if (value) {
- disableNetwork = true;
- localStorage.setItem(disableNetworkKey, "true");
- } else {
- disableNetwork = false;
- localStorage.setItem(disableNetworkKey, "false");
- }
- },
-});
-
-Object.defineProperty(window, "networkLatency", {
- get: () => networkLatency,
- set: (value) => {
- if (typeof value === "number") {
- networkLatency = value;
- localStorage.setItem(networkLatencyKey, value.toString());
- } else if (value == null) {
- networkLatency = null;
- localStorage.removeItem(networkLatencyKey);
- }
- },
-});
-
-export async function mockPrepare(key: string): Promise<void> {
- console.log(`Recieve request: ${key}`);
-
- if (disableNetwork) {
- console.warn("Network is disabled for mock server.");
- throw new HttpNetworkError();
- }
- if (networkLatency != null) {
- await new Promise((resolve) => {
- window.setTimeout(() => {
- resolve();
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- }, networkLatency! * 1000);
- });
- }
-
- await Promise.resolve();
-}
diff --git a/Timeline/ClientApp/src/app/http/mock/install.ts b/Timeline/ClientApp/src/app/http/mock/install.ts
deleted file mode 100644
index 17b7cc13..00000000
--- a/Timeline/ClientApp/src/app/http/mock/install.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { setHttpTokenClient } from "../token";
-import { setHttpUserClient } from "../user";
-import { setHttpTimelineClient } from "../timeline";
-
-import { MockHttpTokenClient } from "./token";
-import { MockHttpUserClient } from "./user";
-import { MockHttpTimelineClient } from "./timeline";
-
-setHttpTokenClient(new MockHttpTokenClient());
-setHttpUserClient(new MockHttpUserClient());
-setHttpTimelineClient(new MockHttpTimelineClient());
diff --git a/Timeline/ClientApp/src/app/http/mock/timeline.ts b/Timeline/ClientApp/src/app/http/mock/timeline.ts
deleted file mode 100644
index 27addd61..00000000
--- a/Timeline/ClientApp/src/app/http/mock/timeline.ts
+++ /dev/null
@@ -1,660 +0,0 @@
-import { random, without, range } from "lodash";
-
-import { BlobWithEtag, NotModified } from "../common";
-import {
- IHttpTimelineClient,
- HttpTimelineInfo,
- TimelineVisibility,
- HttpTimelineListQuery,
- HttpTimelineNotExistError,
- HttpTimelinePostRequest,
- HttpTimelineNameConflictError,
- HttpTimelinePatchRequest,
- HttpTimelinePostInfo,
- HttpTimelinePostContent,
- HttpTimelinePostPostRequest,
- HttpTimelinePostNotExistError,
- HttpTimelineGenericPostInfo,
-} from "../timeline";
-import { HttpUser } from "../user";
-
-import { mockStorage, sha1, mockPrepare } from "./common";
-import { getUser, MockUserNotExistError, checkToken } from "./user";
-
-async function getTimelineNameList(): Promise<string[]> {
- return (await mockStorage.getItem<string[]>("timelines")) ?? [];
-}
-
-async function setTimelineNameList(newOne: string[]): Promise<void> {
- await mockStorage.setItem<string[]>("timelines", newOne);
-}
-
-type TimelinePropertyKey =
- | "uniqueId"
- | "lastModified"
- | "owner"
- | "description"
- | "visibility"
- | "members"
- | "currentPostId";
-
-function getTimelinePropertyKey(
- name: string,
- property: TimelinePropertyKey
-): string {
- return `timeline.${name}.${property}`;
-}
-
-function getTimelinePropertyValue<T>(
- name: string,
- property: TimelinePropertyKey
-): Promise<T> {
- return mockStorage.getItem<T>(
- getTimelinePropertyKey(name, property)
- ) as Promise<T>;
-}
-
-function setTimelinePropertyValue<T>(
- name: string,
- property: TimelinePropertyKey,
- value: T
-): Promise<void> {
- return mockStorage
- .setItem<T>(getTimelinePropertyKey(name, property), value)
- .then();
-}
-
-function updateTimelineLastModified(name: string): Promise<void> {
- return setTimelinePropertyValue(
- name,
- "lastModified",
- new Date().toISOString()
- );
-}
-
-interface HttpTimelineInfoEx extends HttpTimelineInfo {
- memberUsernames: string[];
-}
-
-function createUniqueId(): string {
- const s = "abcdefghijklmnopqrstuvwxz0123456789";
- let result = "";
- for (let i = 0; i < 16; i++) {
- result += s[random(0, s.length - 1)];
- }
- return result;
-}
-
-class MockTimelineNotExistError extends Error {
- constructor() {
- super("Timeline not exist.");
- }
-}
-
-class MockTimelineAlreadyExistError extends Error {
- constructor() {
- super("Timeline already exist.");
- }
-}
-
-async function getTimelineInfo(name: string): Promise<HttpTimelineInfoEx> {
- let owner: HttpUser;
- if (name.startsWith("@")) {
- const ownerUsername = name.substr(1);
- owner = await getUser(ownerUsername);
- const optionalUniqueId = await getTimelinePropertyValue<string | null>(
- name,
- "uniqueId"
- );
- if (optionalUniqueId == null) {
- await setTimelineNameList([...(await getTimelineNameList()), name]);
- await setTimelinePropertyValue(name, "uniqueId", createUniqueId());
- await updateTimelineLastModified(name);
- }
- } else {
- const optionalOwnerUsername = await getTimelinePropertyValue<string | null>(
- name,
- "owner"
- );
- if (optionalOwnerUsername == null) {
- throw new MockTimelineNotExistError();
- } else {
- owner = await getUser(optionalOwnerUsername);
- }
- }
-
- const memberUsernames =
- (await getTimelinePropertyValue<string[] | null>(name, "members")) ?? [];
- const members = await Promise.all(
- memberUsernames.map(async (username) => {
- return await getUser(username);
- })
- );
-
- return {
- name,
- uniqueId: await getTimelinePropertyValue<string>(name, "uniqueId"),
- owner,
- description:
- (await getTimelinePropertyValue<string | null>(name, "description")) ??
- "",
- visibility:
- (await getTimelinePropertyValue<TimelineVisibility | null>(
- name,
- "visibility"
- )) ?? "Register",
- lastModified: new Date(
- await getTimelinePropertyValue<string>(name, "lastModified")
- ),
- members,
- memberUsernames,
- };
-}
-
-async function createTimeline(name: string, owner: string): Promise<void> {
- const optionalOwnerUsername = await getTimelinePropertyValue<string | null>(
- name,
- "owner"
- );
- if (optionalOwnerUsername != null) {
- throw new MockTimelineAlreadyExistError();
- }
-
- await setTimelineNameList([...(await getTimelineNameList()), name]);
- await setTimelinePropertyValue(name, "uniqueId", createUniqueId());
- await setTimelinePropertyValue(name, "owner", owner);
- await updateTimelineLastModified(name);
-}
-
-type TimelinePostPropertyKey =
- | "type"
- | "data"
- | "etag"
- | "author"
- | "time"
- | "lastUpdated";
-
-function getTimelinePostPropertyKey(
- timelineName: string,
- id: number,
- propertyKey: TimelinePostPropertyKey
-): string {
- return `timeline.${timelineName}.posts.${id}.${propertyKey}`;
-}
-
-function getTimelinePostPropertyValue<T>(
- timelineName: string,
- id: number,
- propertyKey: TimelinePostPropertyKey
-): Promise<T> {
- return mockStorage.getItem<T>(
- getTimelinePostPropertyKey(timelineName, id, propertyKey)
- ) as Promise<T>;
-}
-
-function setTimelinePostPropertyValue<T>(
- timelineName: string,
- id: number,
- propertyKey: TimelinePostPropertyKey,
- value: T
-): Promise<T> {
- return mockStorage.setItem(
- getTimelinePostPropertyKey(timelineName, id, propertyKey),
- value
- );
-}
-
-function removeTimelinePostProperty(
- timelineName: string,
- id: number,
- propertyKey: TimelinePostPropertyKey
-): Promise<void> {
- return mockStorage.removeItem(
- getTimelinePostPropertyKey(timelineName, id, propertyKey)
- );
-}
-
-async function getTimelinePostInfo(
- timelineName: string,
- id: number
-): Promise<HttpTimelineGenericPostInfo> {
- const currentPostId = await getTimelinePropertyValue<number | null>(
- timelineName,
- "currentPostId"
- );
- if (currentPostId == null || id > currentPostId) {
- throw new HttpTimelinePostNotExistError();
- }
-
- const type = await getTimelinePostPropertyValue<string | null>(
- timelineName,
- id,
- "type"
- );
-
- if (type == null) {
- return {
- id,
- author: await getUser(
- await getTimelinePostPropertyValue<string>(timelineName, id, "author")
- ),
- time: new Date(
- await getTimelinePostPropertyValue<string>(timelineName, id, "time")
- ),
- lastUpdated: new Date(
- await getTimelinePostPropertyValue<string>(
- timelineName,
- id,
- "lastUpdated"
- )
- ),
- deleted: true,
- };
- } else {
- let content: HttpTimelinePostContent;
- if (type === "text") {
- content = {
- type: "text",
- text: await getTimelinePostPropertyValue(timelineName, id, "data"),
- };
- } else {
- content = {
- type: "image",
- };
- }
-
- return {
- id,
- author: await getUser(
- await getTimelinePostPropertyValue<string>(timelineName, id, "author")
- ),
- time: new Date(
- await getTimelinePostPropertyValue<string>(timelineName, id, "time")
- ),
- lastUpdated: new Date(
- await getTimelinePostPropertyValue<string>(
- timelineName,
- id,
- "lastUpdated"
- )
- ),
- content,
- deleted: false,
- };
- }
-}
-
-export class MockHttpTimelineClient implements IHttpTimelineClient {
- async listTimeline(
- query: HttpTimelineListQuery
- ): Promise<HttpTimelineInfo[]> {
- await mockPrepare("timeline.list");
- return (
- await Promise.all(
- (await getTimelineNameList()).map((name) => getTimelineInfo(name))
- )
- ).filter((timeline) => {
- if (
- query.visibility != null &&
- query.visibility !== timeline.visibility
- ) {
- return false;
- }
- if (query.relate != null) {
- if (query.relateType === "own") {
- if (timeline.owner.username !== query.relate) {
- return false;
- }
- } else if (query.relateType === "join") {
- if (!timeline.memberUsernames.includes(query.relate)) {
- return false;
- }
- } else if (
- timeline.owner.username !== query.relate &&
- !timeline.memberUsernames.includes(query.relate)
- ) {
- return false;
- }
- }
- return true;
- });
- }
-
- getTimeline(timelineName: string): Promise<HttpTimelineInfo>;
- getTimeline(
- timelineName: string,
- query: {
- checkUniqueId?: string;
- }
- ): Promise<HttpTimelineInfo>;
- getTimeline(
- timelineName: string,
- query: {
- checkUniqueId?: string;
- ifModifiedSince: Date;
- }
- ): Promise<HttpTimelineInfo | NotModified>;
- async getTimeline(
- timelineName: string,
- query?: {
- checkUniqueId?: string;
- ifModifiedSince?: Date;
- }
- ): Promise<HttpTimelineInfo | NotModified> {
- await mockPrepare("timeline.get");
- try {
- const timeline = await getTimelineInfo(timelineName);
- if (query != null && query.ifModifiedSince != null) {
- if (timeline.lastModified >= query.ifModifiedSince) {
- return timeline;
- } else {
- if (
- query.checkUniqueId != null &&
- timeline.uniqueId != query.checkUniqueId
- ) {
- return timeline;
- } else {
- return new NotModified();
- }
- }
- }
-
- return timeline;
- } catch (e) {
- if (
- e instanceof MockTimelineNotExistError ||
- e instanceof MockUserNotExistError
- ) {
- throw new HttpTimelineNotExistError();
- }
- throw e;
- }
- }
-
- async postTimeline(
- req: HttpTimelinePostRequest,
- token: string
- ): Promise<HttpTimelineInfo> {
- await mockPrepare("timeline.post");
- const user = checkToken(token);
- try {
- await createTimeline(req.name, user);
- } catch (e) {
- if (e instanceof MockTimelineAlreadyExistError) {
- throw new HttpTimelineNameConflictError();
- }
- throw e;
- }
- return await getTimelineInfo(req.name);
- }
-
- async patchTimeline(
- timelineName: string,
- req: HttpTimelinePatchRequest,
- _token: string
- ): Promise<HttpTimelineInfo> {
- await mockPrepare("timeline.patch");
- let modified = false;
- if (req.description != null) {
- modified = true;
- await setTimelinePropertyValue(
- timelineName,
- "description",
- req.description
- );
- }
- if (req.visibility != null) {
- modified = true;
- await setTimelinePropertyValue(
- timelineName,
- "visibility",
- req.visibility
- );
- }
- if (modified) {
- await updateTimelineLastModified(timelineName);
- }
- return await getTimelineInfo(timelineName);
- }
-
- async deleteTimeline(timelineName: string, _token: string): Promise<void> {
- await mockPrepare("timeline.delete");
- await setTimelineNameList(
- without(await getTimelineNameList(), timelineName)
- );
- await mockStorage.removeItem(
- getTimelinePropertyKey(timelineName, "uniqueId")
- );
-
- // TODO: remove other things
- }
-
- async memberPut(
- timelineName: string,
- username: string,
- _token: string
- ): Promise<void> {
- await mockPrepare("timeline.member.put");
- const oldMembers =
- (await getTimelinePropertyValue<string[] | null>(
- timelineName,
- "members"
- )) ?? [];
- if (!oldMembers.includes(username)) {
- await setTimelinePropertyValue(timelineName, "members", [
- ...oldMembers,
- username,
- ]);
- await updateTimelineLastModified(timelineName);
- }
- }
-
- async memberDelete(
- timelineName: string,
- username: string,
- _token: string
- ): Promise<void> {
- await mockPrepare("timeline.member.delete");
- const oldMembers =
- (await getTimelinePropertyValue<string[] | null>(
- timelineName,
- "members"
- )) ?? [];
- if (oldMembers.includes(username)) {
- await setTimelinePropertyValue(
- timelineName,
- "members",
- without(oldMembers, username)
- );
- await updateTimelineLastModified(timelineName);
- }
- }
-
- listPost(
- timelineName: string,
- token?: string
- ): Promise<HttpTimelinePostInfo[]>;
- listPost(
- timelineName: string,
- token: string | undefined,
- query: {
- modifiedSince?: Date;
- includeDeleted?: false;
- }
- ): Promise<HttpTimelinePostInfo[]>;
- listPost(
- timelineName: string,
- token: string | undefined,
- query: {
- modifiedSince?: Date;
- includeDeleted: true;
- }
- ): Promise<HttpTimelineGenericPostInfo[]>;
- async listPost(
- timelineName: string,
- _token?: string,
- query?: {
- modifiedSince?: Date;
- includeDeleted?: boolean;
- }
- ): Promise<HttpTimelineGenericPostInfo[]> {
- await mockPrepare("timeline.post.list");
- // TODO: Permission check.
-
- const currentPostId = await getTimelinePropertyValue<number | null>(
- timelineName,
- "currentPostId"
- );
-
- return (
- await Promise.all(
- range(1, currentPostId == null ? 1 : currentPostId + 1).map(
- async (id) => {
- return await getTimelinePostInfo(timelineName, id);
- }
- )
- )
- )
- .filter((post) => {
- if (query?.includeDeleted !== true && post.deleted) {
- return false;
- }
- return true;
- })
- .filter((post) => {
- if (query?.modifiedSince != null) {
- return post.lastUpdated >= query.modifiedSince;
- }
- return true;
- });
- }
-
- getPostData(
- timelineName: string,
- postId: number,
- token: string
- ): Promise<BlobWithEtag>;
- async getPostData(
- timelineName: string,
- postId: number,
- _token?: string,
- etag?: string
- ): Promise<BlobWithEtag | NotModified> {
- await mockPrepare("timeline.post.data.get");
- // TODO: Permission check.
-
- const optionalSavedEtag = await getTimelinePostPropertyValue<string>(
- timelineName,
- postId,
- "etag"
- );
-
- if (optionalSavedEtag == null) {
- const optionalType = await getTimelinePostPropertyValue<string>(
- timelineName,
- postId,
- "type"
- );
-
- if (optionalType != null) {
- throw new Error("Post of this type has no data.");
- } else {
- throw new HttpTimelinePostNotExistError();
- }
- }
-
- if (etag === optionalSavedEtag) {
- return new NotModified();
- }
-
- return {
- data: await getTimelinePostPropertyValue<Blob>(
- timelineName,
- postId,
- "data"
- ),
- etag: optionalSavedEtag,
- };
- }
-
- async postPost(
- timelineName: string,
- req: HttpTimelinePostPostRequest,
- token: string
- ): Promise<HttpTimelinePostInfo> {
- await mockPrepare("timeline.post.post");
- const user = checkToken(token);
-
- const savedId = await getTimelinePropertyValue<number | null>(
- timelineName,
- "currentPostId"
- );
- const id = savedId ? savedId + 1 : 1;
- await setTimelinePropertyValue(timelineName, "currentPostId", id);
-
- await setTimelinePostPropertyValue(timelineName, id, "author", user);
-
- const currentTimeString = new Date().toISOString();
- await setTimelinePostPropertyValue(
- timelineName,
- id,
- "lastUpdated",
- currentTimeString
- );
-
- await setTimelinePostPropertyValue(
- timelineName,
- id,
- "time",
- req.time != null ? req.time.toISOString() : currentTimeString
- );
-
- const { content } = req;
- if (content.type === "text") {
- await setTimelinePostPropertyValue(timelineName, id, "type", "text");
- await setTimelinePostPropertyValue(
- timelineName,
- id,
- "data",
- content.text
- );
- } else {
- await setTimelinePostPropertyValue(timelineName, id, "type", "image");
- await setTimelinePostPropertyValue(
- timelineName,
- id,
- "data",
- content.data
- );
- await setTimelinePostPropertyValue(
- timelineName,
- id,
- "etag",
- await sha1(content.data)
- );
- }
-
- return (await getTimelinePostInfo(
- timelineName,
- id
- )) as HttpTimelinePostInfo;
- }
-
- async deletePost(
- timelineName: string,
- postId: number,
- _token: string
- ): Promise<void> {
- await mockPrepare("timeline.post.delete");
- // TODO: permission check
- await removeTimelinePostProperty(timelineName, postId, "type");
- await removeTimelinePostProperty(timelineName, postId, "data");
- await removeTimelinePostProperty(timelineName, postId, "etag");
- await setTimelinePostPropertyValue(
- timelineName,
- postId,
- "lastUpdated",
- new Date().toISOString()
- );
- }
-}
diff --git a/Timeline/ClientApp/src/app/http/mock/token.ts b/Timeline/ClientApp/src/app/http/mock/token.ts
deleted file mode 100644
index 0a350894..00000000
--- a/Timeline/ClientApp/src/app/http/mock/token.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import { AxiosError } from "axios";
-
-import {
- IHttpTokenClient,
- HttpCreateTokenRequest,
- HttpCreateTokenResponse,
- HttpVerifyTokenRequest,
- HttpVerifyTokenResponse,
-} from "../token";
-
-import { mockPrepare } from "./common";
-import { getUser, MockUserNotExistError, checkToken } from "./user";
-
-export class MockHttpTokenClient implements IHttpTokenClient {
- // TODO: Mock bad credentials error.
- async create(req: HttpCreateTokenRequest): Promise<HttpCreateTokenResponse> {
- await mockPrepare("token.create");
- try {
- const user = await getUser(req.username);
- return {
- user,
- token: `token-${req.username}`,
- };
- } catch (e) {
- if (e instanceof MockUserNotExistError) {
- throw {
- isAxiosError: true,
- response: {
- status: 400,
- },
- } as Partial<AxiosError>;
- }
- throw e;
- }
- }
-
- async verify(req: HttpVerifyTokenRequest): Promise<HttpVerifyTokenResponse> {
- await mockPrepare("token.verify");
- try {
- const user = await getUser(checkToken(req.token));
- return {
- user,
- };
- } catch (e) {
- throw {
- isAxiosError: true,
- response: {
- status: 400,
- },
- } as Partial<AxiosError>;
- }
- }
-}
diff --git a/Timeline/ClientApp/src/app/http/mock/user.ts b/Timeline/ClientApp/src/app/http/mock/user.ts
deleted file mode 100644
index 7948da11..00000000
--- a/Timeline/ClientApp/src/app/http/mock/user.ts
+++ /dev/null
@@ -1,139 +0,0 @@
-import axios from "axios";
-
-import { BlobWithEtag, NotModified } from "../common";
-import {
- IHttpUserClient,
- HttpUser,
- HttpUserNotExistError,
- HttpUserPatchRequest,
- HttpChangePasswordRequest,
-} from "../user";
-
-import { mockStorage, sha1, mockPrepare } from "./common";
-import defaultAvatarUrl from "./default-avatar.png";
-
-let _defaultAvatar: BlobWithEtag | undefined = undefined;
-
-async function getDefaultAvatar(): Promise<BlobWithEtag> {
- if (_defaultAvatar == null) {
- const blob = (
- await axios.get<Blob>(defaultAvatarUrl, {
- responseType: "blob",
- })
- ).data;
- const etag = await sha1(blob);
- _defaultAvatar = {
- data: blob,
- etag,
- };
- }
- return _defaultAvatar;
-}
-
-export class MockTokenError extends Error {
- constructor() {
- super("Token bad format.");
- }
-}
-
-export class MockUserNotExistError extends Error {
- constructor() {
- super('Only two user "user" and "admin".');
- }
-}
-
-export function checkUsername(
- username: string
-): asserts username is "user" | "admin" {
- if (!["user", "admin"].includes(username)) throw new MockUserNotExistError();
-}
-
-export function checkToken(token: string): string {
- if (!token.startsWith("token-")) {
- throw new MockTokenError();
- }
- return token.substr(6);
-}
-
-const uniqueIdMap = {
- user: "e4c80127d092d9b2fc19c5e04612d4c0",
- admin: "5640fa45435f9a55077b9f77c42a77bb",
-};
-
-export async function getUser(
- username: "user" | "admin" | string
-): Promise<HttpUser> {
- checkUsername(username);
- const savedNickname = await mockStorage.getItem<string>(
- `user.${username}.nickname`
- );
- return {
- uniqueId: uniqueIdMap[username],
- username: username,
- nickname:
- savedNickname == null || savedNickname === "" ? username : savedNickname,
- administrator: username === "admin",
- };
-}
-
-export class MockHttpUserClient implements IHttpUserClient {
- async get(username: string): Promise<HttpUser> {
- await mockPrepare("user.get");
- return await getUser(username).catch((e) => {
- if (e instanceof MockUserNotExistError) {
- throw new HttpUserNotExistError();
- } else {
- throw e;
- }
- });
- }
-
- async patch(
- username: string,
- req: HttpUserPatchRequest,
- _token: string
- ): Promise<HttpUser> {
- await mockPrepare("user.patch");
- if (req.nickname != null) {
- await mockStorage.setItem(`user.${username}.nickname`, req.nickname);
- }
- return await getUser(username);
- }
-
- getAvatar(username: string): Promise<BlobWithEtag>;
- async getAvatar(
- username: string,
- etag?: string
- ): Promise<BlobWithEtag | NotModified> {
- await mockPrepare("user.avatar.get");
-
- const savedEtag = await mockStorage.getItem(`user.${username}.avatar.etag`);
- if (savedEtag == null) {
- return await getDefaultAvatar();
- }
-
- if (savedEtag === etag) {
- return new NotModified();
- }
-
- return {
- data: await mockStorage.getItem<Blob>(`user.${username}.avatar.data`),
- etag: await mockStorage.getItem<string>(`user.${username}.avatar.etag`),
- };
- }
-
- async putAvatar(username: string, data: Blob, _token: string): Promise<void> {
- await mockPrepare("user.avatar.put");
- const etag = await sha1(data);
- await mockStorage.setItem<Blob>(`user.${username}.avatar.data`, data);
- await mockStorage.setItem<string>(`user.${username}.avatar.etag`, etag);
- }
-
- async changePassword(
- _req: HttpChangePasswordRequest,
- _token: string
- ): Promise<void> {
- await mockPrepare("userop.changepassowrd");
- throw new Error("Not Implemented.");
- }
-}
diff --git a/Timeline/default-avatar.png b/Timeline/default-avatar.png
deleted file mode 100644
index 4086e1d2..00000000
--- a/Timeline/default-avatar.png
+++ /dev/null
Binary files differ
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
deleted file mode 100644
index c0aaee67..00000000
--- a/azure-pipelines.yml
+++ /dev/null
@@ -1,75 +0,0 @@
-trigger:
- - master
- - dev
-
-stages:
-- stage: build
- displayName: Routine Build and Test
-
- jobs:
- - job: frontend_build
- displayName: Frontend Build
- pool:
- vmImage: 'ubuntu-18.04'
-
- steps:
- - script: yarn
- workingDirectory: Timeline/ClientApp
- displayName: Restore Packages
-
- - script: yarn build
- workingDirectory: Timeline/ClientApp
- displayName: Webpack Build
-
- - publish: Timeline/ClientApp/dist
- artifact: timeline-frontend
-
- - job: backend_build
- displayName: Backend Build Debug and Test
- pool:
- vmImage: 'ubuntu-18.04'
- variables:
- buildConfiguration: 'Debug'
- ASPNETCORE_ENVIRONMENT: 'Development'
- steps:
- - task: UseDotNet@2
- inputs:
- packageType: sdk
- version: 3.1.x
-
- - script: dotnet test --configuration $(buildConfiguration) --logger trx --collect:"XPlat Code Coverage" --settings './Timeline.Tests/coverletArgs.runsettings'
- displayName: Dotnet Test
-
- - task: PublishTestResults@2
- condition: succeededOrFailed()
- inputs:
- testRunner: VSTest
- testResultsFiles: '**/*.trx'
-
- - task: PublishCodeCoverageResults@1
- condition: succeededOrFailed()
- inputs:
- codeCoverageTool: 'Cobertura'
- summaryFileLocation: '**/TestResults/*/coverage.cobertura.xml'
-
-- stage: deploy
- displayName: Build Release and Deploy
- dependsOn: build
- condition: eq(variables['Build.SourceBranchName'], 'master')
- variables:
- buildConfiguration: 'Release'
-
- jobs:
- - job: build
- displayName: Build Release Artifact
- pool:
- vmImage: 'ubuntu-18.04'
- steps:
- - task: Docker@2
- displayName: Build And Push Docker Image
- inputs:
- command: buildAndPush
- repository: crupest/timeline
- tags: latest
- buildContext: .
- containerRegistry: crupest-docker-hub