Files
marco/app/controllers/contributions.js
T
raucao 3233150cc4 Connect Nostr account from My Contributions
And upon connection, immediately fetch contributions and render them
2026-08-19 12:24:50 -06:00

61 lines
1.3 KiB
JavaScript

import Controller from '@ember/controller';
import { service } from '@ember/service';
import { action } from '@ember/object';
import { task } from 'ember-concurrency';
export default class ContributionsController extends Controller {
@service router;
@service mapUi;
@service nostrAuth;
@service contributions;
@service storage;
loadContributionsTask = task({ restartable: true }, async (pubkey) => {
if (!pubkey) return;
await this.contributions.load(pubkey);
});
get scrollTop() {
return this.mapUi.getScrollPosition('contributions');
}
get items() {
return this.contributions.items;
}
get isConnected() {
return this.nostrAuth.isConnected;
}
@action
selectContribution(item) {
if (!item) return;
const sidebarContent = document.querySelector('.sidebar-content');
if (sidebarContent) {
this.mapUi.saveScrollPosition('contributions', sidebarContent.scrollTop);
}
this.mapUi.returnToRoute = { name: 'contributions' };
this.mapUi.showSidebar();
this.mapUi.preventNextZoom = true;
this.router.transitionTo(`/place/${item.placeIdentifier}`);
}
@action
onNostrConnected() {
this.loadContributionsTask.perform(this.nostrAuth.pubkey);
}
@action
backToMenu() {
this.router.transitionTo('menu');
}
@action
close() {
this.router.transitionTo('index');
}
}