import { AtomUri } from "@web-atoms/core/dist/core/AtomUri"; import { Inject } from "@web-atoms/core/dist/di/Inject"; import { NavigationService, NotifyType } from "@web-atoms/core/dist/services/NavigationService"; import { Watch } from "@web-atoms/core/dist/view-model/AtomViewModel"; import { AtomWindowViewModel } from "@web-atoms/core/dist/view-model/AtomWindowViewModel"; import Load from "@web-atoms/core/dist/view-model/Load"; import ClipboardService from "../../services/ClipboardService"; import EditorIDService from "../../services/EditorIDService"; import SourceService from "../../services/SourceService"; export default class PublishViewModel extends AtomWindowViewModel { public title: string = "Play this view in your Phone"; public url: string = "https://www.webatoms.in/"; public wrap: boolean = false; public designMode: boolean = true; public decodedUri: string = null; @Inject public navigationService: NavigationService; @Inject public clipboardService: ClipboardService; @Watch public get finalUrl() { const id = this.editorIDService.getID(this.sourceService.folder.root); const url = this.url.toString() .replace("src/", "dist/") .replace(".tsx", ".js") .replace(".ts", ".js"); const finalUrl = new AtomUri(`${this.sourceService.folder.contentUrl}/${id}/${url}`); this.decodedUri = finalUrl.toString(); return this.decodedUri; } @Inject private sourceService: SourceService; @Inject private editorIDService: EditorIDService; public async copyLink(viewModel: any) { const url = window.location.href; await this.clipboardService.copy(url); viewModel.close(); await this.navigationService.notify(" Text Copied ", "", NotifyType.Warning, 1000); } public async shareLink(type: string, viewModel: any) { const url = window.location.href; let openUrl = ""; switch (type) { case "facebook": openUrl = "http://www.facebook.com/sharer.php?u=" + url; break; case "twitter": openUrl = "https://twitter.com/intent/tweet?url=" + url + "&text=&via=&hashtags="; break; case "pinterest": openUrl = "http://pinterest.com/pin/create/button/?url=" + url; break; case "linkedin": openUrl = "https://www.linkedin.com/shareArticle?mini=true&url=" + url + "&title=&summary=&source="; break; case "skype": openUrl = "https://web.skype.com/share?url=" + url; break; } window.open(openUrl); viewModel.close(); } }