mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-18 20:59:39 +02:00
* Basic plaid data model and linking * Remove institutions, add plaid items * Improve schema and Plaid provider * Add webhook verification sketch * Webhook verification * Item accounts and balances sync setup * Provide test encryption keys * Fix test * Only provide encryption keys in prod * Try defining keys in test env * Consolidate account sync logic * Add back plaid account initialization * Plaid transaction sync * Sync UI overhaul for Plaid * Add liability and investment syncing * Handle investment webhooks and process current day holdings * Remove logs * Remove "all" period select for performance * fix amount calc * Remove todo comment * Coming soon for investment historical data * Document Plaid configuration * Listen for holding updates
52 lines
1 KiB
JavaScript
52 lines
1 KiB
JavaScript
import { Controller } from "@hotwired/stimulus";
|
|
|
|
// Connects to data-controller="plaid"
|
|
export default class extends Controller {
|
|
static values = {
|
|
linkToken: String,
|
|
};
|
|
|
|
open() {
|
|
const handler = Plaid.create({
|
|
token: this.linkTokenValue,
|
|
onSuccess: this.handleSuccess,
|
|
onLoad: this.handleLoad,
|
|
onExit: this.handleExit,
|
|
onEvent: this.handleEvent,
|
|
});
|
|
|
|
handler.open();
|
|
}
|
|
|
|
handleSuccess(public_token, metadata) {
|
|
fetch("/plaid_items", {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
"X-CSRF-Token": document.querySelector('[name="csrf-token"]').content,
|
|
},
|
|
body: JSON.stringify({
|
|
plaid_item: {
|
|
public_token: public_token,
|
|
metadata: metadata,
|
|
},
|
|
}),
|
|
}).then((response) => {
|
|
if (response.redirected) {
|
|
window.location.href = response.url;
|
|
}
|
|
});
|
|
}
|
|
|
|
handleExit(err, metadata) {
|
|
// no-op
|
|
}
|
|
|
|
handleEvent(eventName, metadata) {
|
|
// no-op
|
|
}
|
|
|
|
handleLoad() {
|
|
// no-op
|
|
}
|
|
}
|