-
-
Notifications
You must be signed in to change notification settings - Fork 144
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: user has api key available on profile page feat: api endpoint to calculate monthly cost feat: split settings page into settings and profile page feat: redesigned experimental mobile navigation menu fix: small fixes and typos
- Loading branch information
Showing
37 changed files
with
1,076 additions
and
690 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,151 @@ | ||
<?php | ||
/* | ||
This API Endpoint accepts both POST and GET requests | ||
It receives as parameters: | ||
- month: the month for which the cost is to be calculated | ||
- year: the year for which the cost is to be calculated | ||
- apiKey: the API key of the user | ||
It returns a JSON object with the following properties: | ||
- success: a boolean indicating whether the request was successful | ||
- title: a string with "${month} ${year}" (e.g. "January 2022") | ||
- monthly_cost: a float with the total cost for the given month | ||
- currency_code: a string with the currency code of the user's main currency | ||
- currency_symbol: a string with the currency symbol of the user's main currency | ||
- notes: warning messages or additional information | ||
*/ | ||
|
||
require_once '../../includes/connect_endpoint.php'; | ||
|
||
header('Content-Type: application/json, charset=UTF-8'); | ||
|
||
if ($_SERVER["REQUEST_METHOD"] === "POST" || $_SERVER["REQUEST_METHOD"] === "GET") { | ||
// if the parameters are not set, return an error | ||
|
||
if (!isset($_REQUEST['month']) || !isset($_REQUEST['year']) || !isset($_REQUEST['api_key'])) { | ||
$response = [ | ||
"success" => false, | ||
"title" => "Missing parameters" | ||
]; | ||
echo json_encode($response); | ||
exit; | ||
} | ||
|
||
$month = $_REQUEST['month']; | ||
$year = $_REQUEST['year']; | ||
$apiKey = $_REQUEST['api_key']; | ||
|
||
$sql = "SELECT * FROM user WHERE api_key = :apiKey"; | ||
$stmt = $db->prepare($sql); | ||
$stmt->bindValue(':apiKey', $apiKey); | ||
$result = $stmt->execute(); | ||
$user = $result->fetchArray(SQLITE3_ASSOC); | ||
|
||
$sql = "SELECT * FROM last_exchange_update"; | ||
$result = $db->query($sql); | ||
$lastExchangeUpdate = $result->fetchArray(SQLITE3_ASSOC); | ||
|
||
$userId = $user['id']; | ||
$userCurrencyId = $user['main_currency']; | ||
$needsCurrencyConversion = false; | ||
$canConvertCurrency = empty($lastExchangeUpdate['date']) ? false : true; | ||
|
||
$sql = "SELECT * FROM currencies WHERE id = :currencyId"; | ||
$stmt = $db->prepare($sql); | ||
$stmt->bindValue(':currencyId', $userCurrencyId); | ||
$result = $stmt->execute(); | ||
$currency = $result->fetchArray(SQLITE3_ASSOC); | ||
$currency_code = $currency['code']; | ||
$currency_symbol = $currency['symbol']; | ||
|
||
|
||
$title = date('F Y', strtotime($year . '-' . $month . '-01')); | ||
$monthlyCost = 0; | ||
$notes = []; | ||
|
||
$sql = "SELECT * FROM subscriptions WHERE user_id = :userId AND inactive = 0"; | ||
$stmt = $db->prepare($sql); | ||
$stmt->bindValue(':userId', $userId); | ||
$result = $stmt->execute(); | ||
$subscriptions = []; | ||
while ($subscription = $result->fetchArray(SQLITE3_ASSOC)) { | ||
$subscriptions[] = $subscription; | ||
if ($subscription['currency_id'] !== $userCurrencyId) { | ||
$needsCurrencyConversion = true; | ||
} | ||
} | ||
|
||
if ($needsCurrencyConversion) { | ||
if (!$canConvertCurrency) { | ||
$notes[] = "You are using multiple currencies, but the exchange rates have not been updated yet. Please check your Fixer API Key."; | ||
} else { | ||
$sql = "SELECT * FROM currencies WHERE user_id = :userId"; | ||
$stmt = $db->prepare($sql); | ||
$stmt->bindValue(':userId', $userId); | ||
$result = $stmt->execute(); | ||
$currencies = []; | ||
while ($currency = $result->fetchArray(SQLITE3_ASSOC)) { | ||
$currencies[$currency['id']] = $currency['rate']; | ||
} | ||
} | ||
} | ||
|
||
// Calculate the monthly cost based on the next_payment_date, payment cycle, and payment frequency | ||
foreach ($subscriptions as $subscription) { | ||
$nextPaymentDate = strtotime($subscription['next_payment']); | ||
$cycle = $subscription['cycle']; // Integer from 1 to 4 | ||
$frequency = $subscription['frequency']; | ||
|
||
// Determine the strtotime increment string based on cycle | ||
switch ($cycle) { | ||
case 1: // Days | ||
$incrementString = "+{$frequency} days"; | ||
break; | ||
case 2: // Weeks | ||
$incrementString = "+{$frequency} weeks"; | ||
break; | ||
case 3: // Months | ||
$incrementString = "+{$frequency} months"; | ||
break; | ||
case 4: // Years | ||
$incrementString = "+{$frequency} years"; | ||
break; | ||
default: | ||
$incrementString = "+{$frequency} months"; // Default case, if needed | ||
} | ||
|
||
// Calculate the start of the month | ||
$startOfMonth = strtotime($year . '-' . str_pad($month, 2, '0', STR_PAD_LEFT) . '-01'); | ||
|
||
// Find the first payment date of the month by moving backwards | ||
$startDate = $nextPaymentDate; | ||
while ($startDate > $startOfMonth) { | ||
$startDate = strtotime("-" . $incrementString, $startDate); | ||
} | ||
|
||
// Calculate the monthly cost | ||
for ($date = $startDate; $date <= strtotime("+1 month", $startOfMonth); $date = strtotime($incrementString, $date)) { | ||
if (date('Y-m', $date) == $year . '-' . str_pad($month, 2, '0', STR_PAD_LEFT)) { | ||
$price = $subscription['price']; | ||
if ($userCurrencyId !== $subscription['currency_id']) { | ||
$price *= $currencies[$userCurrencyId] / $currencies[$subscription['currency_id']]; | ||
} | ||
$monthlyCost += $price; | ||
} | ||
} | ||
} | ||
|
||
$formatter = new NumberFormatter('en_US', NumberFormatter::CURRENCY); | ||
$localizedMonthlyCost = $formatter->formatCurrency($monthlyCost, $currency_code); | ||
|
||
echo json_encode([ | ||
'success' => true, | ||
'title' => $title, | ||
'monthly_cost' => number_format($monthlyCost, 2), | ||
'localized_monthly_cost' => $localizedMonthlyCost, | ||
'currency_code' => $currency_code, | ||
'currency_symbol' => $currency_symbol, | ||
'notes' => $notes | ||
], JSON_UNESCAPED_UNICODE); | ||
|
||
} | ||
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
<?php | ||
require_once '../../includes/connect_endpoint.php'; | ||
|
||
if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] !== true) { | ||
die(json_encode([ | ||
"success" => false, | ||
"message" => translate('session_expired', $i18n) | ||
])); | ||
} | ||
|
||
if ($_SERVER["REQUEST_METHOD"] === "POST") { | ||
$postData = file_get_contents("php://input"); | ||
$data = json_decode($postData, true); | ||
|
||
$apiKey = bin2hex(random_bytes(32)); | ||
|
||
$sql = "UPDATE user SET api_key = :apiKey WHERE id = :userId"; | ||
$stmt = $db->prepare($sql); | ||
$stmt->bindValue(':apiKey', $apiKey, SQLITE3_TEXT); | ||
$stmt->bindValue(':userId', $userId, SQLITE3_TEXT); | ||
$result = $stmt->execute(); | ||
|
||
if ($result) { | ||
$response = [ | ||
"success" => true, | ||
"message" => translate('user_details_saved', $i18n), | ||
"apiKey" => $apiKey | ||
]; | ||
echo json_encode($response); | ||
} else { | ||
$response = [ | ||
"success" => false, | ||
"message" => translate('error_updating_user_data', $i18n) | ||
]; | ||
echo json_encode($response); | ||
} | ||
|
||
} | ||
|
||
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="100" height="100" viewBox="0 0 50 50"> | ||
<path fill="currentColor" d="M 12 0 C 10.90625 0 10 0.90625 10 2 L 10 4 L 4 4 C 3.476563 4 2.945313 4.191406 2.570313 4.570313 C 2.191406 4.945313 2 5.476563 2 6 L 2 46 C 2 46.523438 2.191406 47.054688 2.570313 47.433594 C 2.945313 47.808594 3.476563 48 4 48 L 46 48 C 46.523438 48 47.054688 47.808594 47.433594 47.433594 C 47.808594 47.054688 48 46.523438 48 46 L 48 6 C 48 5.476563 47.808594 4.945313 47.433594 4.570313 C 47.054688 4.191406 46.523438 4 46 4 L 40 4 L 40 2 C 40 0.90625 39.09375 0 38 0 L 36 0 C 34.90625 0 34 0.90625 34 2 L 34 4 L 16 4 L 16 2 C 16 0.90625 15.09375 0 14 0 Z M 12 2 L 14 2 L 14 8 L 12 8 Z M 36 2 L 38 2 L 38 8 L 36 8 Z M 4 6 L 10 6 L 10 8 C 10 9.09375 10.90625 10 12 10 L 14 10 C 15.09375 10 16 9.09375 16 8 L 16 6 L 34 6 L 34 8 C 34 9.09375 34.90625 10 36 10 L 38 10 C 39.09375 10 40 9.09375 40 8 L 40 6 L 46 6 L 46 13 L 4 13 Z M 4 15 L 46 15 L 46 46 L 4 46 Z M 10 19 L 10 42 L 40 42 L 40 19 Z M 12 21 L 17 21 L 17 26 L 12 26 Z M 19 21 L 24 21 L 24 26 L 19 26 Z M 26 21 L 31 21 L 31 26 L 26 26 Z M 33 21 L 38 21 L 38 26 L 33 26 Z M 12 28 L 17 28 L 17 33 L 12 33 Z M 19 28 L 24 28 L 24 33 L 19 33 Z M 26 28 L 31 28 L 31 33 L 26 33 Z M 33 28 L 38 28 L 38 33 L 33 33 Z M 12 35 L 17 35 L 17 40 L 12 40 Z M 19 35 L 24 35 L 24 40 L 19 40 Z M 26 35 L 31 35 L 31 40 L 26 40 Z M 33 35 L 38 35 L 38 40 L 33 40 Z"></path> | ||
</svg> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="100" height="100" viewBox="0 0 50 50"> | ||
<path fill="currentColor" d="M 24.962891 1.0546875 A 1.0001 1.0001 0 0 0 24.384766 1.2636719 L 1.3847656 19.210938 A 1.0005659 1.0005659 0 0 0 2.6152344 20.789062 L 4 19.708984 L 4 46 C 4 46.552 4.448 47 5 47 L 45 47 C 45.552 47 46 46.552 46 46 L 46 19.708984 L 47.384766 20.789062 A 1.0005657 1.0005657 0 1 0 48.615234 19.210938 L 41 13.269531 C 40.999922 13.061489 41.00006 12.820623 41 12.507812 C 40.999859 11.776319 41.000062 10.809744 41 9.8457031 C 40.999875 7.9176211 41 6 41 6 A 1.0001 1.0001 0 0 0 40 5 L 36 5 A 1.0001 1.0001 0 0 0 35 6 C 35 6 35.000625 7.1570629 35 8.3144531 C 34.999946 8.4138611 35.000063 8.4892153 35 8.5878906 L 25.615234 1.2636719 A 1.0001 1.0001 0 0 0 24.962891 1.0546875 z M 25 3.3222656 L 35.378906 11.419922 A 1.0001 1.0001 0 0 0 36.367188 11.560547 C 36.367188 11.560547 36.986309 10.761867 36.986328 10.761719 C 36.986348 10.76157 36.991388 10.708386 36.992188 10.697266 C 36.993688 10.675006 36.993841 10.668839 36.994141 10.662109 C 36.994592 10.648659 36.995894 10.642016 36.996094 10.634766 C 36.996335 10.620266 36.995945 10.606331 36.996094 10.587891 C 36.996392 10.551011 36.995852 10.499661 36.996094 10.435547 C 36.996578 10.307318 36.997647 10.125735 36.998047 9.9082031 C 36.99857 9.4731324 36.999687 8.8954613 37 8.3164062 C 37.000355 7.6582563 36.999934 7.4454733 37 7 L 39 7 C 39.000006 7.6422969 38.999908 8.4189176 39 9.8457031 C 39.000063 10.809787 38.999859 11.77615 39 12.507812 C 39.00007 12.873644 38.999904 13.179924 39 13.398438 C 39.000096 13.61695 39.000933 13.681016 39.001953 13.769531 A 1.0001 1.0001 0 0 0 39.386719 14.546875 L 44 18.146484 L 44 45 L 6 45 L 6 18.148438 L 25 3.3222656 z M 15 27 A 1.0001 1.0001 0 1 0 15 29 L 35 29 A 1.0001 1.0001 0 1 0 35 27 L 15 27 z M 15 33 A 1.0001 1.0001 0 1 0 15 35 L 35 35 A 1.0001 1.0001 0 1 0 35 33 L 15 33 z"></path> | ||
</svg> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="100" height="100" viewBox="0 0 50 50"> | ||
<path fill="currentColor" d="M 25 2.0078125 C 12.309296 2.0078125 2.0000002 12.317108 2 25.007812 C 2 37.698518 12.309295 48.007812 25 48.007812 C 37.690705 48.007812 48 37.698518 48 25.007812 C 48 12.317108 37.690704 2.0078125 25 2.0078125 z M 25 4.0078125 C 36.609824 4.0078125 46 13.397988 46 25.007812 C 46 30.740509 43.703999 35.925856 39.988281 39.712891 C 38.158498 38.369571 35.928049 37.69558 34.039062 37.023438 C 32.975192 36.644889 32.018651 36.269758 31.320312 35.851562 C 30.651504 35.451051 30.280089 35.039466 30.083984 34.566406 C 29.992134 33.419545 30.010738 32.496253 30.017578 31.40625 C 30.13873 31.285594 30.294155 31.200823 30.417969 31.054688 C 30.709957 30.710058 31.007253 30.29128 31.291016 29.820312 C 31.777604 29.012711 32.131673 28.024913 32.330078 27.023438 C 32.63305 26.869 32.956699 26.835578 33.203125 26.521484 C 33.658098 25.941577 33.965233 25.125482 34.101562 23.988281 C 34.222454 22.984232 33.898957 22.29366 33.482422 21.763672 C 33.930529 20.298851 34.48532 17.969341 34.296875 15.558594 C 34.193203 14.232288 33.859467 12.897267 33.056641 11.787109 C 32.290173 10.727229 31.045786 9.9653642 29.453125 9.6894531 C 28.441568 8.5409775 26.834704 8 24.914062 8 L 24.904297 8 L 24.896484 8 C 20.593741 8.078993 17.817552 9.8598398 16.628906 12.576172 C 15.498615 15.159149 15.741603 18.37477 16.552734 21.722656 C 16.116708 22.25268 15.775146 22.95643 15.898438 23.988281 C 16.035282 25.125098 16.34224 25.94153 16.796875 26.521484 C 17.043118 26.835604 17.366808 26.868911 17.669922 27.023438 C 17.868296 28.024134 18.222437 29.01059 18.708984 29.818359 C 18.992747 30.289465 19.289737 30.707821 19.582031 31.052734 C 19.705876 31.198874 19.861128 31.285522 19.982422 31.40625 C 19.988922 32.49568 20.007396 33.418614 19.916016 34.566406 C 19.720294 35.037723 19.34937 35.449526 18.681641 35.851562 C 17.984409 36.271364 17.029015 36.648577 15.966797 37.029297 C 14.079805 37.705631 11.85061 38.384459 10.015625 39.716797 C 6.2976298 35.929423 4 30.742497 4 25.007812 C 4.0000002 13.397989 13.390176 4.0078125 25 4.0078125 z M 24.921875 10.001953 C 26.766001 10.003853 27.92628 10.549863 28.244141 11.107422 L 28.488281 11.535156 L 28.974609 11.601562 C 30.230788 11.776108 30.932655 12.263579 31.435547 12.958984 C 31.938439 13.654389 32.217535 14.624895 32.302734 15.714844 C 32.473134 17.894741 31.849129 20.468905 31.453125 21.660156 L 31.201172 22.416016 L 31.882812 22.830078 C 31.813472 22.787858 32.203297 23.018609 32.115234 23.75 C 32.008564 24.639799 31.781184 25.093017 31.628906 25.287109 C 31.476629 25.481202 31.411442 25.45641 31.427734 25.455078 L 30.603516 25.523438 L 30.515625 26.345703 C 30.440195 27.052169 30.04285 28.015793 29.578125 28.787109 C 29.345762 29.172767 29.098543 29.516317 28.890625 29.761719 C 28.682707 30.00712 28.461282 30.159117 28.544922 30.115234 L 28.009766 30.394531 L 28.009766 31 C 28.009766 32.324321 27.955813 33.407291 28.095703 34.949219 L 28.107422 35.082031 L 28.154297 35.207031 C 28.547829 36.266071 29.369275 37.013258 30.292969 37.566406 C 31.216662 38.119555 32.276387 38.519377 33.369141 38.908203 C 35.170096 39.549023 37.047465 40.179657 38.478516 41.111328 C 34.832228 44.16545 30.135566 46.007812 25 46.007812 C 19.866422 46.007812 15.171083 44.167232 11.525391 41.115234 C 12.964568 40.188909 14.844735 39.556492 16.642578 38.912109 C 17.73461 38.520704 18.79156 38.119183 19.712891 37.564453 C 20.634221 37.009723 21.452728 36.262662 21.845703 35.207031 L 21.892578 35.082031 L 21.904297 34.949219 C 22.043042 33.408482 21.990234 32.325309 21.990234 31 L 21.990234 30.394531 L 21.455078 30.113281 C 21.538828 30.157091 21.317362 30.005196 21.109375 29.759766 C 20.901388 29.514336 20.654237 29.172879 20.421875 28.787109 C 19.957151 28.015571 19.559775 27.05118 19.484375 26.345703 L 19.396484 25.523438 L 18.572266 25.455078 C 18.587716 25.456378 18.523206 25.481158 18.371094 25.287109 C 18.218979 25.093064 17.991921 24.640183 17.884766 23.75 C 17.797356 23.01846 18.191557 22.784891 18.117188 22.830078 L 18.751953 22.445312 L 18.566406 21.724609 C 17.705952 18.412902 17.575833 15.399621 18.460938 13.376953 C 19.345167 11.356284 21.116417 10.074289 24.921875 10.001953 z"></path> | ||
</svg> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="100" height="100" viewBox="0 0 50 50"> | ||
<path fill="currentColor" d="M 22.205078 2 A 1.0001 1.0001 0 0 0 21.21875 2.8378906 L 20.246094 8.7929688 C 19.076509 9.1331971 17.961243 9.5922728 16.910156 10.164062 L 11.996094 6.6542969 A 1.0001 1.0001 0 0 0 10.708984 6.7597656 L 6.8183594 10.646484 A 1.0001 1.0001 0 0 0 6.7070312 11.927734 L 10.164062 16.873047 C 9.583454 17.930271 9.1142098 19.051824 8.765625 20.232422 L 2.8359375 21.21875 A 1.0001 1.0001 0 0 0 2.0019531 22.205078 L 2.0019531 27.705078 A 1.0001 1.0001 0 0 0 2.8261719 28.691406 L 8.7597656 29.742188 C 9.1064607 30.920739 9.5727226 32.043065 10.154297 33.101562 L 6.6542969 37.998047 A 1.0001 1.0001 0 0 0 6.7597656 39.285156 L 10.648438 43.175781 A 1.0001 1.0001 0 0 0 11.927734 43.289062 L 16.882812 39.820312 C 17.936999 40.39548 19.054994 40.857928 20.228516 41.201172 L 21.21875 47.164062 A 1.0001 1.0001 0 0 0 22.205078 48 L 27.705078 48 A 1.0001 1.0001 0 0 0 28.691406 47.173828 L 29.751953 41.1875 C 30.920633 40.838997 32.033372 40.369697 33.082031 39.791016 L 38.070312 43.291016 A 1.0001 1.0001 0 0 0 39.351562 43.179688 L 43.240234 39.287109 A 1.0001 1.0001 0 0 0 43.34375 37.996094 L 39.787109 33.058594 C 40.355783 32.014958 40.813915 30.908875 41.154297 29.748047 L 47.171875 28.693359 A 1.0001 1.0001 0 0 0 47.998047 27.707031 L 47.998047 22.207031 A 1.0001 1.0001 0 0 0 47.160156 21.220703 L 41.152344 20.238281 C 40.80968 19.078827 40.350281 17.974723 39.78125 16.931641 L 43.289062 11.933594 A 1.0001 1.0001 0 0 0 43.177734 10.652344 L 39.287109 6.7636719 A 1.0001 1.0001 0 0 0 37.996094 6.6601562 L 33.072266 10.201172 C 32.023186 9.6248101 30.909713 9.1579916 29.738281 8.8125 L 28.691406 2.828125 A 1.0001 1.0001 0 0 0 27.705078 2 L 22.205078 2 z M 23.056641 4 L 26.865234 4 L 27.861328 9.6855469 A 1.0001 1.0001 0 0 0 28.603516 10.484375 C 30.066026 10.848832 31.439607 11.426549 32.693359 12.185547 A 1.0001 1.0001 0 0 0 33.794922 12.142578 L 38.474609 8.7792969 L 41.167969 11.472656 L 37.835938 16.220703 A 1.0001 1.0001 0 0 0 37.796875 17.310547 C 38.548366 18.561471 39.118333 19.926379 39.482422 21.380859 A 1.0001 1.0001 0 0 0 40.291016 22.125 L 45.998047 23.058594 L 45.998047 26.867188 L 40.279297 27.871094 A 1.0001 1.0001 0 0 0 39.482422 28.617188 C 39.122545 30.069817 38.552234 31.434687 37.800781 32.685547 A 1.0001 1.0001 0 0 0 37.845703 33.785156 L 41.224609 38.474609 L 38.53125 41.169922 L 33.791016 37.84375 A 1.0001 1.0001 0 0 0 32.697266 37.808594 C 31.44975 38.567585 30.074755 39.148028 28.617188 39.517578 A 1.0001 1.0001 0 0 0 27.876953 40.3125 L 26.867188 46 L 23.052734 46 L 22.111328 40.337891 A 1.0001 1.0001 0 0 0 21.365234 39.53125 C 19.90185 39.170557 18.522094 38.59371 17.259766 37.835938 A 1.0001 1.0001 0 0 0 16.171875 37.875 L 11.46875 41.169922 L 8.7734375 38.470703 L 12.097656 33.824219 A 1.0001 1.0001 0 0 0 12.138672 32.724609 C 11.372652 31.458855 10.793319 30.079213 10.427734 28.609375 A 1.0001 1.0001 0 0 0 9.6328125 27.867188 L 4.0019531 26.867188 L 4.0019531 23.052734 L 9.6289062 22.117188 A 1.0001 1.0001 0 0 0 10.435547 21.373047 C 10.804273 19.898143 11.383325 18.518729 12.146484 17.255859 A 1.0001 1.0001 0 0 0 12.111328 16.164062 L 8.8261719 11.46875 L 11.523438 8.7734375 L 16.185547 12.105469 A 1.0001 1.0001 0 0 0 17.28125 12.148438 C 18.536908 11.394293 19.919867 10.822081 21.384766 10.462891 A 1.0001 1.0001 0 0 0 22.132812 9.6523438 L 23.056641 4 z M 25 17 C 20.593567 17 17 20.593567 17 25 C 17 29.406433 20.593567 33 25 33 C 29.406433 33 33 29.406433 33 25 C 33 20.593567 29.406433 17 25 17 z M 25 19 C 28.325553 19 31 21.674447 31 25 C 31 28.325553 28.325553 31 25 31 C 21.674447 31 19 28.325553 19 25 C 19 21.674447 21.674447 19 25 19 z"></path> | ||
</svg> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="100" height="100" viewBox="0 0 50 50"> | ||
<path fill="currentColor" d="M 34 4 L 34 50 L 48 50 L 48 4 Z M 36 6 L 46 6 L 46 48 L 36 48 Z M 2 17 L 2 50 L 16 50 L 16 17 Z M 4 19 L 14 19 L 14 48 L 4 48 Z M 18 28 L 18 50 L 32 50 L 32 28 Z M 20 30 L 30 30 L 30 48 L 20 48 Z"></path> | ||
</svg> |
Oops, something went wrong.