mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-03 20:06:08 +01:00 
			
		
		
		
	chore(monorepo): relocate client files
This commit is contained in:
		
							
								
								
									
										77
									
								
								apps/client/src/widgets/shared_info.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								apps/client/src/widgets/shared_info.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,77 @@
 | 
			
		||||
import NoteContextAwareWidget from "./note_context_aware_widget.js";
 | 
			
		||||
import options from "../services/options.js";
 | 
			
		||||
import attributeService from "../services/attributes.js";
 | 
			
		||||
import { t } from "../services/i18n.js";
 | 
			
		||||
import type FNote from "../entities/fnote.js";
 | 
			
		||||
import type { EventData } from "../components/app_context.js";
 | 
			
		||||
 | 
			
		||||
const TPL = /*html*/`
 | 
			
		||||
<div class="shared-info-widget alert alert-warning use-tn-links">
 | 
			
		||||
    <style>
 | 
			
		||||
        .shared-info-widget {
 | 
			
		||||
            margin: 10px;
 | 
			
		||||
            contain: none;
 | 
			
		||||
            padding: 10px;
 | 
			
		||||
            font-weight: bold;
 | 
			
		||||
        }
 | 
			
		||||
    </style>
 | 
			
		||||
 | 
			
		||||
    <span class="shared-text"></span> <a class="shared-link external"></a>. ${t("shared_info.help_link")}
 | 
			
		||||
</div>`;
 | 
			
		||||
 | 
			
		||||
export default class SharedInfoWidget extends NoteContextAwareWidget {
 | 
			
		||||
 | 
			
		||||
    private $sharedLink!: JQuery<HTMLElement>;
 | 
			
		||||
    private $sharedText!: JQuery<HTMLElement>;
 | 
			
		||||
 | 
			
		||||
    isEnabled() {
 | 
			
		||||
        return super.isEnabled() && this.noteId !== "_share" && this.note?.hasAncestor("_share");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    doRender() {
 | 
			
		||||
        this.$widget = $(TPL);
 | 
			
		||||
        this.$sharedLink = this.$widget.find(".shared-link");
 | 
			
		||||
        this.$sharedText = this.$widget.find(".shared-text");
 | 
			
		||||
        this.contentSized();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async refreshWithNote(note: FNote) {
 | 
			
		||||
        const syncServerHost = options.get("syncServerHost");
 | 
			
		||||
        let link;
 | 
			
		||||
 | 
			
		||||
        const shareId = this.getShareId(note);
 | 
			
		||||
 | 
			
		||||
        if (syncServerHost) {
 | 
			
		||||
            link = `${syncServerHost}/share/${shareId}`;
 | 
			
		||||
            this.$sharedText.text(t("shared_info.shared_publicly"));
 | 
			
		||||
        } else {
 | 
			
		||||
            let host = location.host;
 | 
			
		||||
            if (host.endsWith("/")) {
 | 
			
		||||
                // seems like IE has trailing slash
 | 
			
		||||
                // https://github.com/zadam/trilium/issues/3782
 | 
			
		||||
                host = host.substr(0, host.length - 1);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            link = `${location.protocol}//${host}${location.pathname}share/${shareId}`;
 | 
			
		||||
            this.$sharedText.text(t("shared_info.shared_locally"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.$sharedLink.attr("href", link).text(link);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    getShareId(note: FNote) {
 | 
			
		||||
        if (note.hasOwnedLabel("shareRoot")) {
 | 
			
		||||
            return "";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return note.getOwnedLabelValue("shareAlias") || note.noteId;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded">) {
 | 
			
		||||
        if (loadResults.getAttributeRows().find((attr) => attr.name?.startsWith("_share") && attributeService.isAffecting(attr, this.note))) {
 | 
			
		||||
            this.refresh();
 | 
			
		||||
        } else if (loadResults.getBranchRows().find((branch) => branch.noteId === this.noteId)) {
 | 
			
		||||
            this.refresh();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user