Initial Commit

This commit is contained in:
Caesar2011
2024-01-29 08:48:33 +01:00
commit 2c5ff097b8
9 changed files with 144 additions and 0 deletions

8
.idea/.gitignore generated vendored Normal file
View 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
View 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
View 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
View 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
View File

@@ -0,0 +1 @@
cd src && rm -f .../finanzfluss-addon.zip && zip -r ../finanzfluss-addon.zip *

BIN
finanzfluss-addon.zip Normal file

Binary file not shown.

8
src/background.js Normal file
View 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
View 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
View 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"]
}
]
}