Initial Commit
This commit is contained in:
8
.idea/.gitignore
generated
vendored
Normal file
8
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
12
.idea/finanzfluss-addon.iml
generated
Normal file
12
.idea/finanzfluss-addon.iml
generated
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="WEB_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/finanzfluss-addon.iml" filepath="$PROJECT_DIR$/.idea/finanzfluss-addon.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
1
compile.sh
Executable file
1
compile.sh
Executable file
@@ -0,0 +1 @@
|
|||||||
|
cd src && rm -f .../finanzfluss-addon.zip && zip -r ../finanzfluss-addon.zip *
|
||||||
BIN
finanzfluss-addon.zip
Normal file
BIN
finanzfluss-addon.zip
Normal file
Binary file not shown.
8
src/background.js
Normal file
8
src/background.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
function logURL(requestDetails) {
|
||||||
|
console.log(`Loading: ${requestDetails.url}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
browser.webRequest.onBeforeRequest.addListener(logURL, {
|
||||||
|
urls: ["<all_urls>"],
|
||||||
|
|
||||||
|
});
|
||||||
89
src/contentScript.js
Normal file
89
src/contentScript.js
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
// contentScript.js
|
||||||
|
|
||||||
|
const styleElement = document.createElement('style');
|
||||||
|
// language=CSS
|
||||||
|
styleElement.textContent = `
|
||||||
|
.ff-addon-title {
|
||||||
|
margin: 0;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 30px;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ff-addon-title-container {
|
||||||
|
margin-bottom: 12px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ff-addon-hr {
|
||||||
|
margin: 0px 0px 16px;
|
||||||
|
border-width: 0px 0px thin;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgb(54, 58, 61);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ff-addon-container {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}`;
|
||||||
|
document.head.appendChild(styleElement);
|
||||||
|
|
||||||
|
const scriptElement = document.createElement('script');
|
||||||
|
// language=JavaScript
|
||||||
|
scriptElement.textContent = `
|
||||||
|
async function doJsonFetch(token, method, url) {
|
||||||
|
const res = await fetch(url,
|
||||||
|
{
|
||||||
|
method: method,
|
||||||
|
credentials: 'same-origin',
|
||||||
|
headers: {
|
||||||
|
"Authorization": "Bearer "+token
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return await res.json()
|
||||||
|
}
|
||||||
|
|
||||||
|
async function onButtonClick() {
|
||||||
|
const loginToken = localStorage.getItem('LOGIN_TOKEN');
|
||||||
|
const jsonToken = loginToken && JSON.parse(loginToken);
|
||||||
|
if (!jsonToken?.access_token) {
|
||||||
|
console.error("No access token found!", jsonToken)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const householdBooks = await doJsonFetch(jsonToken?.access_token, "GET", "https://rentablo.de/api/v1/accounts/selectGroups/householdBook?fallbackAccountType[]=02_cash&excludeManuallyMaintainedFallbackAccounts=true")
|
||||||
|
console.log(householdBooks)
|
||||||
|
const accountIds = householdBooks.accountIds
|
||||||
|
const accountIdsQuery = "accountId[]="+accountIds.join("&accountId[]=")
|
||||||
|
const transactions = await doJsonFetch(jsonToken?.access_token, "GET", "https://rentablo.de/api/v1/transactions?"+accountIdsQuery+"&includeAdjustingEntries=false&skipManuallyCreatedTransactions=true&minDate=2024-01-01&maxDate=2024-01-31&order=date+desc&perPage=5000")
|
||||||
|
console.log(transactions)
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
document.head.appendChild(scriptElement);
|
||||||
|
|
||||||
|
let parent
|
||||||
|
const paragraphs = document.getElementsByTagName('p');
|
||||||
|
for (let i = 0; i < paragraphs.length; i++) {
|
||||||
|
if (paragraphs[i].textContent.includes('Transaktionen')) {
|
||||||
|
parent = paragraphs[i].parentNode.parentNode;
|
||||||
|
break; // Stop searching once found
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const configDiv = document.getElementById("configDiv") || document.createElement("div")
|
||||||
|
configDiv.remove()
|
||||||
|
// language=HTML
|
||||||
|
configDiv.innerHTML = `
|
||||||
|
<div class='MuiBox-root ff-addon-title-container'>
|
||||||
|
<p class="MuiTypography-root MuiTypography-subtitle1 ff-addon-title">Konfiguriere Deine Zuordnungen</p>
|
||||||
|
</div>
|
||||||
|
<hr class="MuiDivider-root MuiDivider-fullWidth ff-addon-hr"/>
|
||||||
|
<div>
|
||||||
|
<button id="ff-addon-submit" onclick="onButtonClick()">
|
||||||
|
Get all
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
`
|
||||||
|
configDiv.id = "configDiv"
|
||||||
|
configDiv.className = "MuiBox-root ff-addon-container"
|
||||||
|
|
||||||
|
parent.parentNode.insertBefore(configDiv, parent)
|
||||||
|
|
||||||
12
src/manifest.json
Normal file
12
src/manifest.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"manifest_version": 3,
|
||||||
|
"name": "Finanzfluss",
|
||||||
|
"version": "1.0",
|
||||||
|
"permissions": ["webRequest", "cookies", "activeTab", "scripting", "https://rentablo.de", "https://www.finanzfluss.de"],
|
||||||
|
"content_scripts": [
|
||||||
|
{
|
||||||
|
"matches": ["<all_urls>"],
|
||||||
|
"js": ["contentScript.js"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user