37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
|
import Component from '@glimmer/component';
|
||
|
import { service } from '@ember/service';
|
||
|
import type RouterService from '@ember/routing/router-service';
|
||
|
import { action } from '@ember/object';
|
||
|
import { tracked } from '@glimmer/tracking';
|
||
|
|
||
|
export default class SharePollUrlComponent extends Component {
|
||
|
@service declare router: RouterService;
|
||
|
|
||
|
@tracked shouldShowCopySuccessMessage = false;
|
||
|
|
||
|
get pollUrl() {
|
||
|
// RouterService.currentURL is relative to the webserver's
|
||
|
// directory from which Croodle is served.
|
||
|
const relativeUrl = this.router.currentURL;
|
||
|
|
||
|
// The URL under which Croodle is served, is not known at
|
||
|
// build-time. But we can construct it ourself, by parsing
|
||
|
// window.location.href and replacing the hash part.
|
||
|
const absoluteUrl = new URL(window.location.href);
|
||
|
absoluteUrl.hash = relativeUrl;
|
||
|
|
||
|
return absoluteUrl.toString();
|
||
|
}
|
||
|
|
||
|
@action
|
||
|
showCopySuccessMessage() {
|
||
|
this.shouldShowCopySuccessMessage = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
declare module '@glint/environment-ember-loose/registry' {
|
||
|
export default interface Registry {
|
||
|
SharePollUrl: typeof SharePollUrlComponent;
|
||
|
}
|
||
|
}
|