From 3e123bee620a08eb3a81a3d8900509729b338e0c Mon Sep 17 00:00:00 2001 From: Cilibiu Bogdan Date: Fri, 6 Jul 2018 12:42:13 +0300 Subject: [PATCH] [ACA-1115] Quick Share (#492) * share file * fix * fix test dependency * experimental guard --- src/app.config.json | 3 ++- src/app/app.component.ts | 11 ++++++++- src/app/app.module.ts | 4 ++++ src/app/app.routes.ts | 11 +++++++++ .../services/experimental-guard.service.ts | 20 ++++++++++++++++ .../favorites/favorites.component.html | 11 +++++++++ src/app/components/files/files.component.html | 11 +++++++++ src/app/components/page.component.ts | 6 ++++- .../components/preview/preview.component.html | 10 ++++++++ .../preview/preview.component.spec.ts | 4 +++- .../recent-files/recent-files.component.html | 10 ++++++++ .../settings/settings.component.html | 8 +++++++ .../components/settings/settings.component.ts | 8 +++++++ .../shared-link-view.component.html | 6 +++++ .../shared-link-view.component.scss | 4 ++++ .../shared-link-view.component.ts | 24 +++++++++++++++++++ src/app/store/actions/app.actions.ts | 6 +++++ src/app/store/reducers/app.reducer.ts | 18 +++++++++++++- src/app/store/selectors/app.selectors.ts | 1 + src/app/store/states/app.state.ts | 2 ++ src/assets/i18n/en.json | 3 ++- 21 files changed, 175 insertions(+), 6 deletions(-) create mode 100644 src/app/common/services/experimental-guard.service.ts create mode 100644 src/app/components/shared-link-view/shared-link-view.component.html create mode 100644 src/app/components/shared-link-view/shared-link-view.component.scss create mode 100644 src/app/components/shared-link-view/shared-link-view.component.ts diff --git a/src/app.config.json b/src/app.config.json index c5b410bf8..9bbfb77b6 100644 --- a/src/app.config.json +++ b/src/app.config.json @@ -11,7 +11,8 @@ "experimental": { "libraries": false, "comments": false, - "cardview": false + "cardview": false, + "share": false }, "headerColor": "#2196F3", "languagePicker": false, diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 74d5e6aa4..6023365bb 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -30,7 +30,13 @@ import { AuthenticationService, AlfrescoApiService } from '@alfresco/adf-core'; import { Store } from '@ngrx/store'; import { AppStore } from './store/states/app.state'; -import { SetHeaderColorAction, SetAppNameAction, SetLogoPathAction, SetLanguagePickerAction } from './store/actions'; +import { + SetHeaderColorAction, + SetAppNameAction, + SetLogoPathAction, + SetLanguagePickerAction, + SetSharedUrlAction +} from './store/actions'; @Component({ selector: 'app-root', @@ -94,5 +100,8 @@ export class AppComponent implements OnInit { } const languagePicker = this.config.get('languagePicker'); this.store.dispatch(new SetLanguagePickerAction(languagePicker)); + + const sharedPreviewUrl = this.config.get('ecmHost') + '/#/preview/s/'; + this.store.dispatch(new SetSharedUrlAction(sharedPreviewUrl)); } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index f5f07237d..d12bb6a24 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -53,6 +53,7 @@ import { SidenavComponent } from './components/sidenav/sidenav.component'; import { AboutComponent } from './components/about/about.component'; import { LocationLinkComponent } from './components/location-link/location-link.component'; import { CustomDlRowComponent } from './components/custom-dl-row/custom-dl-row.component'; +import { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component'; import { NodeCopyDirective } from './common/directives/node-copy.directive'; import { NodeDeleteDirective } from './common/directives/node-delete.directive'; import { NodeMoveDirective } from './common/directives/node-move.directive'; @@ -69,6 +70,7 @@ import { SearchComponent } from './components/search/search.component'; import { SettingsComponent } from './components/settings/settings.component'; import { PageTitleService as AcaPageTitleService } from './common/services/page-title.service'; import { ProfileResolver } from './common/services/profile.resolver'; +import { ExperimentalGuard } from './common/services/experimental-guard.service'; import { InfoDrawerComponent } from './components/info-drawer/info-drawer.component'; import { EditFolderDirective } from './directives/edit-folder.directive'; @@ -128,6 +130,7 @@ import { ContentApiService } from './services/content-api.service'; SearchComponent, SettingsComponent, InfoDrawerComponent, + SharedLinkViewComponent, EditFolderDirective, CreateFolderDirective, DownloadNodesDirective, @@ -151,6 +154,7 @@ import { ContentApiService } from './services/content-api.service'; NodeActionsService, NodePermissionService, ProfileResolver, + ExperimentalGuard, ContentApiService ], entryComponents: [ diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index 0a4b610a0..c285b155e 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -25,6 +25,7 @@ import { Routes } from '@angular/router'; import { AuthGuardEcm } from '@alfresco/adf-core'; +import { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component'; import { LayoutComponent } from './components/layout/layout.component'; @@ -43,6 +44,7 @@ import { SearchComponent } from './components/search/search.component'; import { SettingsComponent } from './components/settings/settings.component'; import { ProfileResolver } from './common/services/profile.resolver'; +import { ExperimentalGuard } from './common/services/experimental-guard.service'; export const APP_ROUTES: Routes = [ { @@ -59,6 +61,15 @@ export const APP_ROUTES: Routes = [ title: 'Settings' } }, + { + path: 'preview/s/:id', + component: SharedLinkViewComponent, + canActivate: [ ExperimentalGuard ], + data: { + ifExperimentalKey: 'share', + title: 'APP.PREVIEW.TITLE', + } + }, { path: '', component: LayoutComponent, diff --git a/src/app/common/services/experimental-guard.service.ts b/src/app/common/services/experimental-guard.service.ts new file mode 100644 index 000000000..5750f5fa4 --- /dev/null +++ b/src/app/common/services/experimental-guard.service.ts @@ -0,0 +1,20 @@ +import { CanActivate, ActivatedRouteSnapshot } from '@angular/router'; +import { Injectable } from '@angular/core'; +import { AppConfigService } from '@alfresco/adf-core'; +import { environment } from '../../../environments/environment'; + +@Injectable() +export class ExperimentalGuard implements CanActivate { + constructor(private config: AppConfigService) {} + + canActivate(route: ActivatedRouteSnapshot) { + const key = `experimental.${route.data.ifExperimentalKey}`; + const value = this.config.get(key); + + if (!environment.production) { + return value === true || value === 'true'; + } + + return false; + } +} diff --git a/src/app/components/favorites/favorites.component.html b/src/app/components/favorites/favorites.component.html index 113755bba..8e44beb9a 100644 --- a/src/app/components/favorites/favorites.component.html +++ b/src/app/components/favorites/favorites.component.html @@ -44,6 +44,17 @@ info_outline + + + + + + + + + + + + + + + +