rebranding from cinny to vojo: change basic icons and naming
20
index.html
|
|
@ -4,33 +4,33 @@
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
|
||||||
<title>Cinny</title>
|
<title>Vojo</title>
|
||||||
<meta name="name" content="Cinny" />
|
<meta name="name" content="Vojo" />
|
||||||
<meta name="author" content="Ajay Bura" />
|
<meta name="author" content="Vojo" />
|
||||||
<meta
|
<meta
|
||||||
name="description"
|
name="description"
|
||||||
content="A Matrix client where you can enjoy the conversation using simple, elegant and secure interface protected by e2ee with the power of open source."
|
content="A Matrix client where you can enjoy the conversation using simple, elegant and secure interface protected by e2ee with the power of open source."
|
||||||
/>
|
/>
|
||||||
<meta
|
<meta
|
||||||
name="keywords"
|
name="keywords"
|
||||||
content="cinny, cinnyapp, cinnychat, matrix, matrix client, matrix.org, element"
|
content="vojo, matrix, matrix client, matrix.org"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<meta property="og:title" content="Cinny" />
|
<meta property="og:title" content="Vojo" />
|
||||||
<meta property="og:url" content="https://cinny.in" />
|
<meta property="og:url" content="" />
|
||||||
<meta property="og:image" content="https://cinny.in/assets/favicon-48x48.png" />
|
<meta property="og:image" content="./public/res/svg/vojo.svg" />
|
||||||
<meta
|
<meta
|
||||||
property="og:description"
|
property="og:description"
|
||||||
content="A Matrix client where you can enjoy the conversation using simple, elegant and secure interface protected by e2ee with the power of open source."
|
content="A Matrix client where you can enjoy the conversation using simple, elegant and secure interface protected by e2ee with the power of open source."
|
||||||
/>
|
/>
|
||||||
<meta name="theme-color" content="#000000" />
|
<meta name="theme-color" content="#000000" />
|
||||||
|
|
||||||
<link id="favicon" rel="shortcut icon" href="./public/favicon.ico" />
|
<link id="favicon" rel="shortcut icon" type="image/svg+xml" href="./public/res/svg/vojo.svg" />
|
||||||
|
|
||||||
<link rel="manifest" href="/manifest.json" />
|
<link rel="manifest" href="/manifest.json" />
|
||||||
<meta name="mobile-web-app-capable" content="yes" />
|
<meta name="mobile-web-app-capable" content="yes" />
|
||||||
<meta name="application-name" content="Cinny" />
|
<meta name="application-name" content="Vojo" />
|
||||||
<meta name="apple-mobile-web-app-title" content="Cinny" />
|
<meta name="apple-mobile-web-app-title" content="Vojo" />
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||||
|
|
||||||
|
|
|
||||||
4
package-lock.json
generated
|
|
@ -1,11 +1,11 @@
|
||||||
{
|
{
|
||||||
"name": "cinny",
|
"name": "vojo",
|
||||||
"version": "4.11.1",
|
"version": "4.11.1",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "cinny",
|
"name": "vojo",
|
||||||
"version": "4.11.1",
|
"version": "4.11.1",
|
||||||
"license": "AGPL-3.0-only",
|
"license": "AGPL-3.0-only",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "cinny",
|
"name": "vojo",
|
||||||
"version": "4.11.1",
|
"version": "4.11.1",
|
||||||
"description": "Yet another matrix client",
|
"description": "Yet another matrix client",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 32 KiB |
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "Cinny",
|
"name": "Vojo",
|
||||||
"short_name": "Cinny",
|
"short_name": "Vojo",
|
||||||
"description": "Yet another matrix client",
|
"description": "Vojo Matrix client",
|
||||||
"dir": "auto",
|
"dir": "auto",
|
||||||
"lang": "en-US",
|
"lang": "en-US",
|
||||||
"display": "standalone",
|
"display": "standalone",
|
||||||
|
|
@ -10,6 +10,12 @@
|
||||||
"background_color": "#fff",
|
"background_color": "#fff",
|
||||||
"theme_color": "#fff",
|
"theme_color": "#fff",
|
||||||
"icons": [
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "./public/res/svg/vojo.svg",
|
||||||
|
"sizes": "any",
|
||||||
|
"type": "image/svg+xml",
|
||||||
|
"purpose": "any maskable"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"src": "./public/android/android-chrome-36x36.png",
|
"src": "./public/android/android-chrome-36x36.png",
|
||||||
"sizes": "36x36",
|
"sizes": "36x36",
|
||||||
|
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<g clip-path="url(#clip0_2707_1961)">
|
|
||||||
<path d="M10.5867 17.3522C10.0727 17.4492 9.54226 17.5 9 17.5C4.30558 17.5 0.5 13.6944 0.5 9C0.5 4.30558 4.30558 0.5 9 0.5C13.6944 0.5 17.5 4.30558 17.5 9C17.5 9.54226 17.4492 10.0727 17.3522 10.5867C16.6511 10.2123 15.8503 10 15 10C12.2386 10 10 12.2386 10 15C10 15.8503 10.2123 16.6511 10.5867 17.3522Z" fill="white"/>
|
|
||||||
<path d="M10 6.39999C10 6.67614 9.77614 6.89999 9.5 6.89999C9.22386 6.89999 9 6.67614 9 6.39999C9 6.12385 9.22386 5.89999 9.5 5.89999C9.77614 5.89999 10 6.12385 10 6.39999Z" fill="black"/>
|
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9 0C4 0 0 4 0 9C0 14 4 18 9 18C9.63967 18 10.263 17.9345 10.8636 17.8099C10.3186 17.0091 10 16.0417 10 15C10 12.2386 12.2386 10 15 10C16.0417 10 17.0091 10.3186 17.8099 10.8636C17.9345 10.263 18 9.63967 18 9C18 4 14 0 9 0ZM1.2 10.8L4.7 8.5V8.2C4.7 6.4 6 5 7.8 4.8H8.2C9.4 4.8 10.5 5.4 11.1 6.4C11.4 6.3 11.7 6.3 12 6.3C12.4 6.3 12.8 6.3 13.2 6.4C13.9 6.6 14.6 6.9 15.2 7.3C14.6 7.1 14 7 13.3 7C12.1 7 11.1 7.4 10.4 8.4C9.7 9.3 9.3 10.4 9.3 11.6C9.3 13.1 8.9 14.5 8 15.8C7.93744 15.8834 7.87923 15.9625 7.82356 16.0381C7.6123 16.325 7.43739 16.5626 7.2 16.8C4.2 16.1 1.9 13.8 1.2 10.8Z" fill="black"/>
|
|
||||||
<path d="M18 15C18 16.6569 16.6569 18 15 18C13.3431 18 12 16.6569 12 15C12 13.3431 13.3431 12 15 12C16.6569 12 18 13.3431 18 15Z" fill="#45B83B"/>
|
|
||||||
</g>
|
|
||||||
<defs>
|
|
||||||
<clipPath id="clip0_2707_1961">
|
|
||||||
<rect width="18" height="18" fill="white"/>
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB |
|
|
@ -1,13 +0,0 @@
|
||||||
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<g clip-path="url(#clip0_2707_2015)">
|
|
||||||
<path d="M10.5867 17.3522C10.0727 17.4492 9.54226 17.5 9 17.5C4.30558 17.5 0.5 13.6944 0.5 9C0.5 4.30558 4.30558 0.5 9 0.5C13.6944 0.5 17.5 4.30558 17.5 9C17.5 9.54226 17.4492 10.0727 17.3522 10.5867C16.6511 10.2123 15.8503 10 15 10C12.2386 10 10 12.2386 10 15C10 15.8503 10.2123 16.6511 10.5867 17.3522Z" fill="white"/>
|
|
||||||
<path d="M10 6.39999C10 6.67614 9.77614 6.89999 9.5 6.89999C9.22386 6.89999 9 6.67614 9 6.39999C9 6.12385 9.22386 5.89999 9.5 5.89999C9.77614 5.89999 10 6.12385 10 6.39999Z" fill="black"/>
|
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9 0C4 0 0 4 0 9C0 14 4 18 9 18C9.63967 18 10.263 17.9345 10.8636 17.8099C10.3186 17.0091 10 16.0417 10 15C10 12.2386 12.2386 10 15 10C16.0417 10 17.0091 10.3186 17.8099 10.8636C17.9345 10.263 18 9.63967 18 9C18 4 14 0 9 0ZM1.2 10.8L4.7 8.5V8.2C4.7 6.4 6 5 7.8 4.8H8.2C9.4 4.8 10.5 5.4 11.1 6.4C11.4 6.3 11.7 6.3 12 6.3C12.4 6.3 12.8 6.3 13.2 6.4C13.9 6.6 14.6 6.9 15.2 7.3C14.6 7.1 14 7 13.3 7C12.1 7 11.1 7.4 10.4 8.4C9.7 9.3 9.3 10.4 9.3 11.6C9.3 13.1 8.9 14.5 8 15.8C7.93744 15.8834 7.87923 15.9625 7.82356 16.0381C7.6123 16.325 7.43739 16.5626 7.2 16.8C4.2 16.1 1.9 13.8 1.2 10.8Z" fill="black"/>
|
|
||||||
<path d="M18 15C18 16.6569 16.6569 18 15 18C13.3431 18 12 16.6569 12 15C12 13.3431 13.3431 12 15 12C16.6569 12 18 13.3431 18 15Z" fill="#989898"/>
|
|
||||||
</g>
|
|
||||||
<defs>
|
|
||||||
<clipPath id="clip0_2707_2015">
|
|
||||||
<rect width="18" height="18" fill="white"/>
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB |
|
|
@ -1,19 +0,0 @@
|
||||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In -->
|
|
||||||
<svg version="1.1"
|
|
||||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
|
||||||
x="0px" y="0px" width="18px" height="18px" viewBox="0 0 18 18" enable-background="new 0 0 18 18" xml:space="preserve">
|
|
||||||
<defs>
|
|
||||||
</defs>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<circle fill="#FFFFFF" cx="9" cy="9" r="8.5"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path d="M9,0C4,0,0,4,0,9c0,5,4,9,9,9c5,0,9-4,9-9C18,4,14,0,9,0z M1.2,10.8l3.5-2.3c0-0.1,0-0.2,0-0.3c0-1.8,1.3-3.2,3.1-3.4
|
|
||||||
c0.1,0,0.2,0,0.4,0c1.2,0,2.3,0.6,2.9,1.6c0.3-0.1,0.6-0.1,0.9-0.1c0.4,0,0.8,0,1.2,0.1c0.7,0.2,1.4,0.5,2,0.9
|
|
||||||
C14.6,7.1,14,7,13.3,7c-1.2,0-2.2,0.4-2.9,1.4c-0.7,0.9-1.1,2-1.1,3.2c0,1.5-0.4,2.9-1.3,4.2c-0.3,0.4-0.5,0.7-0.8,1
|
|
||||||
C4.2,16.1,1.9,13.8,1.2,10.8z"/>
|
|
||||||
<circle cx="9.5" cy="6.4" r="0.5"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 871 B |
6
public/res/svg/vojo-highlight.svg
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M62 32.969C62 28.879 59.006 25.495 55.087 24.856C54.111 18.111 50.096 13.447 43.375 10.782C44.521 10.177 45.262 9.87399 45.262 9.87399C42.024 8.73499 39.215 8.06999 36.785 7.76899C38.062 6.80699 38.916 6.43999 38.916 6.43999C19.162 3.65399 9.422 14.643 8.811 24.871C4.941 25.551 2 28.914 2 32.969C2 36.984 4.883 40.324 8.695 41.051C8.863 44.703 10.534 48.055 13.225 50.811C13.2106 51.8005 13.2778 52.7895 13.426 53.768L6.57 62H19.521L20.464 61.152C20.7507 61.18 21.0443 61.1943 21.345 61.195C22.078 61.195 22.854 61.113 23.649 60.957C25.281 60.631 27.185 59.434 29.015 57.834C29.994 57.932 30.985 58 32 58C32.108 58 32.214 57.992 32.322 57.99C35.517 59.738 39.218 61.043 41.806 61.043C42.281 61.043 42.728 61.002 43.134 60.922C43.405 60.867 43.657 60.797 43.914 60.731L44.984 62H58.955L50.172 52.242C50.152 52 50.119 51.752 50.082 51.504C53.186 48.631 55.119 45.012 55.303 41.051C59.116 40.324 62 36.984 62 32.969ZM8.9 38.139C6.59 37.537 4.877 35.463 4.877 32.97C4.877 30.553 6.49 28.534 8.693 27.866C8.743 30.027 9.313 32.094 10.308 33.997C9.63046 35.2979 9.15564 36.6947 8.9 38.139ZM23.356 59.484C22.6943 59.6208 22.0207 59.6914 21.345 59.695C16.295 59.695 12.906 55.3 15.732 43.433C16.228 41.345 16.729 40.632 17.251 40.632C18.365 40.632 19.572 43.88 21.026 43.88C21.0769 43.8799 21.1277 43.8759 21.178 43.868C21.178 43.868 25.156 40.208 29.154 40.208C29.3967 40.208 29.6393 40.2223 29.882 40.251C31.428 40.435 27.133 44.149 24.793 46.069C25.796 45.2867 26.8292 44.5438 27.89 43.842C27.7912 44.0884 27.7515 44.3545 27.774 44.619C27.782 44.6977 27.7937 44.7763 27.809 44.855C25.752 45.128 25.018 46.14 24.777 47.011C24.443 48.218 24.931 49.284 26.355 50.292C26.2623 50.392 26.178 50.504 26.102 50.628C25.876 50.999 25.578 51.778 26.119 52.819C26.616 53.778 27.645 54.819 28.966 55.831C27.053 57.695 25.002 59.156 23.356 59.484ZM42.845 59.449C42.5028 59.5137 42.1552 59.5452 41.807 59.543C37.23 59.543 28.962 55.051 27.45 52.131C27.006 51.276 27.702 50.975 28.897 50.975C30.16 50.975 31.979 51.311 33.594 51.678C30.217 50.694 25.767 49.063 26.222 47.414C26.452 46.582 27.535 46.285 28.961 46.285C31.261 46.285 34.453 47.056 36.401 47.594C33.505 46.711 28.12 44.912 29.479 44.153C30.708 43.467 32.154 43.239 33.539 43.239C36.346 43.239 38.904 44.18 38.904 44.18C40.499 43.801 40.208 39.651 41.522 39.651C42.002 39.651 42.697 40.206 43.777 41.704C51.823 52.863 48.937 58.248 42.845 59.449ZM31.406 41.938C32.011 41.708 32.57 41.565 33.037 41.565C33.3303 41.565 33.5837 41.625 33.797 41.745C33.7117 41.7417 33.6257 41.7397 33.539 41.739C32.8234 41.74 32.1094 41.8066 31.406 41.938ZM44.385 40.031C43.313 38.713 42.448 38.15 41.523 38.15C39.735 38.15 39.231 40.035 38.898 41.281C38.81 41.609 38.67 42.133 38.53 42.488C37.6166 42.2247 36.6856 42.0269 35.744 41.896C35.6507 41.6092 35.5083 41.3409 35.323 41.103C35.1341 40.8698 34.9077 40.6697 34.653 40.511C34.948 40.156 35.147 39.501 35.147 38.745C35.147 37.612 34.7 36.686 34.147 36.686C33.592 36.686 33.147 37.612 33.147 38.745C33.147 39.27 33.245 39.743 33.401 40.106C33.278 40.092 33.172 40.063 33.038 40.063C32.6367 40.063 32.189 40.1307 31.695 40.266C31.6807 40.1869 31.6617 40.1088 31.638 40.032C31.512 39.602 31.218 39.266 30.838 39.04C30.845 38.942 30.854 38.847 30.854 38.745C30.854 37.612 30.407 36.686 29.854 36.686C29.303 36.686 28.858 37.606 28.855 38.731C25.467 38.858 22.268 41.059 20.881 42.159C20.614 41.884 19.899 40.788 19.085 39.977C16.652 37.557 11.979 32.942 11.979 28.204C11.979 11.271 32 22.059 32 22.059C32 22.059 52.021 11.271 52.021 28.205C52.021 32.904 48.881 37.271 44.385 40.031ZM53.691 33.996C54.686 32.092 55.255 30.028 55.304 27.865C57.507 28.534 59.12 30.553 59.12 32.969C59.12 35.463 57.406 37.537 55.097 38.138C54.8435 36.6934 54.3693 35.2964 53.691 33.996Z" fill="black"/>
|
||||||
|
<path d="M33.594 51.678C35.596 52.262 37.22 52.619 37.22 52.619C37.22 52.619 35.557 52.125 33.594 51.678ZM36.401 47.594C37.42 47.907 38.13 48.104 38.13 48.104C38.13 48.104 37.444 47.883 36.401 47.594Z" fill="black"/>
|
||||||
|
<path d="M40.684 36.246C42.617 36.246 44.184 34.2313 44.184 31.746C44.184 29.2607 42.617 27.246 40.684 27.246C38.751 27.246 37.184 29.2607 37.184 31.746C37.184 34.2313 38.751 36.246 40.684 36.246Z" fill="#15661A"/>
|
||||||
|
<path d="M23.32 36.246C25.253 36.246 26.82 34.2313 26.82 31.746C26.82 29.2607 25.253 27.246 23.32 27.246C21.387 27.246 19.82 29.2607 19.82 31.746C19.82 34.2313 21.387 36.246 23.32 36.246Z" fill="#15661A"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.4 KiB |
6
public/res/svg/vojo-unread.svg
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M62 32.969C62 28.879 59.006 25.495 55.087 24.856C54.111 18.111 50.096 13.447 43.375 10.782C44.521 10.177 45.262 9.87399 45.262 9.87399C42.024 8.73499 39.215 8.06999 36.785 7.76899C38.062 6.80699 38.916 6.43999 38.916 6.43999C19.162 3.65399 9.422 14.643 8.811 24.871C4.941 25.551 2 28.914 2 32.969C2 36.984 4.883 40.324 8.695 41.051C8.863 44.703 10.534 48.055 13.225 50.811C13.2106 51.8005 13.2778 52.7895 13.426 53.768L6.57 62H19.521L20.464 61.152C20.7507 61.18 21.0443 61.1943 21.345 61.195C22.078 61.195 22.854 61.113 23.649 60.957C25.281 60.631 27.185 59.434 29.015 57.834C29.994 57.932 30.985 58 32 58C32.108 58 32.214 57.992 32.322 57.99C35.517 59.738 39.218 61.043 41.806 61.043C42.281 61.043 42.728 61.002 43.134 60.922C43.405 60.867 43.657 60.797 43.914 60.731L44.984 62H58.955L50.172 52.242C50.152 52 50.119 51.752 50.082 51.504C53.186 48.631 55.119 45.012 55.303 41.051C59.116 40.324 62 36.984 62 32.969ZM8.9 38.139C6.59 37.537 4.877 35.463 4.877 32.97C4.877 30.553 6.49 28.534 8.693 27.866C8.743 30.027 9.313 32.094 10.308 33.997C9.63046 35.2979 9.15564 36.6947 8.9 38.139ZM23.356 59.484C22.6943 59.6208 22.0207 59.6914 21.345 59.695C16.295 59.695 12.906 55.3 15.732 43.433C16.228 41.345 16.729 40.632 17.251 40.632C18.365 40.632 19.572 43.88 21.026 43.88C21.0769 43.8799 21.1277 43.8759 21.178 43.868C21.178 43.868 25.156 40.208 29.154 40.208C29.3967 40.208 29.6393 40.2223 29.882 40.251C31.428 40.435 27.133 44.149 24.793 46.069C25.796 45.2867 26.8292 44.5438 27.89 43.842C27.7912 44.0884 27.7515 44.3545 27.774 44.619C27.782 44.6977 27.7937 44.7763 27.809 44.855C25.752 45.128 25.018 46.14 24.777 47.011C24.443 48.218 24.931 49.284 26.355 50.292C26.2623 50.392 26.178 50.504 26.102 50.628C25.876 50.999 25.578 51.778 26.119 52.819C26.616 53.778 27.645 54.819 28.966 55.831C27.053 57.695 25.002 59.156 23.356 59.484ZM42.845 59.449C42.5028 59.5137 42.1552 59.5452 41.807 59.543C37.23 59.543 28.962 55.051 27.45 52.131C27.006 51.276 27.702 50.975 28.897 50.975C30.16 50.975 31.979 51.311 33.594 51.678C30.217 50.694 25.767 49.063 26.222 47.414C26.452 46.582 27.535 46.285 28.961 46.285C31.261 46.285 34.453 47.056 36.401 47.594C33.505 46.711 28.12 44.912 29.479 44.153C30.708 43.467 32.154 43.239 33.539 43.239C36.346 43.239 38.904 44.18 38.904 44.18C40.499 43.801 40.208 39.651 41.522 39.651C42.002 39.651 42.697 40.206 43.777 41.704C51.823 52.863 48.937 58.248 42.845 59.449ZM31.406 41.938C32.011 41.708 32.57 41.565 33.037 41.565C33.3303 41.565 33.5837 41.625 33.797 41.745C33.7117 41.7417 33.6257 41.7397 33.539 41.739C32.8234 41.74 32.1094 41.8066 31.406 41.938ZM44.385 40.031C43.313 38.713 42.448 38.15 41.523 38.15C39.735 38.15 39.231 40.035 38.898 41.281C38.81 41.609 38.67 42.133 38.53 42.488C37.6166 42.2247 36.6856 42.0269 35.744 41.896C35.6507 41.6092 35.5083 41.3409 35.323 41.103C35.1341 40.8698 34.9077 40.6697 34.653 40.511C34.948 40.156 35.147 39.501 35.147 38.745C35.147 37.612 34.7 36.686 34.147 36.686C33.592 36.686 33.147 37.612 33.147 38.745C33.147 39.27 33.245 39.743 33.401 40.106C33.278 40.092 33.172 40.063 33.038 40.063C32.6367 40.063 32.189 40.1307 31.695 40.266C31.6807 40.1869 31.6617 40.1088 31.638 40.032C31.512 39.602 31.218 39.266 30.838 39.04C30.845 38.942 30.854 38.847 30.854 38.745C30.854 37.612 30.407 36.686 29.854 36.686C29.303 36.686 28.858 37.606 28.855 38.731C25.467 38.858 22.268 41.059 20.881 42.159C20.614 41.884 19.899 40.788 19.085 39.977C16.652 37.557 11.979 32.942 11.979 28.204C11.979 11.271 32 22.059 32 22.059C32 22.059 52.021 11.271 52.021 28.205C52.021 32.904 48.881 37.271 44.385 40.031ZM53.691 33.996C54.686 32.092 55.255 30.028 55.304 27.865C57.507 28.534 59.12 30.553 59.12 32.969C59.12 35.463 57.406 37.537 55.097 38.138C54.8435 36.6934 54.3693 35.2964 53.691 33.996Z" fill="black"/>
|
||||||
|
<path d="M33.594 51.678C35.596 52.262 37.22 52.619 37.22 52.619C37.22 52.619 35.557 52.125 33.594 51.678ZM36.401 47.594C37.42 47.907 38.13 48.104 38.13 48.104C38.13 48.104 37.444 47.883 36.401 47.594Z" fill="black"/>
|
||||||
|
<path d="M40.684 36.246C42.617 36.246 44.184 34.2313 44.184 31.746C44.184 29.2607 42.617 27.246 40.684 27.246C38.751 27.246 37.184 29.2607 37.184 31.746C37.184 34.2313 38.751 36.246 40.684 36.246Z" fill="white"/>
|
||||||
|
<path d="M23.32 36.246C25.253 36.246 26.82 34.2313 26.82 31.746C26.82 29.2607 25.253 27.246 23.32 27.246C21.387 27.246 19.82 29.2607 19.82 31.746C19.82 34.2313 21.387 36.246 23.32 36.246Z" fill="white"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.4 KiB |
1
public/res/svg/vojo.svg
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><title>Speak-no-evil-monkey SVG Icon</title><path fill="currentColor" d="M62 32.969c0-4.09-2.994-7.474-6.913-8.113c-.976-6.745-4.991-11.409-11.712-14.074c1.146-.605 1.887-.908 1.887-.908c-3.238-1.139-6.047-1.804-8.477-2.105c1.277-.962 2.131-1.329 2.131-1.329C19.162 3.654 9.422 14.643 8.811 24.871C4.941 25.551 2 28.914 2 32.969c0 4.015 2.883 7.355 6.695 8.082c.168 3.652 1.839 7.004 4.53 9.76a18 18 0 0 0 .201 2.957L6.57 62h12.951l.943-.848q.43.042.881.043c.733 0 1.509-.082 2.304-.238c1.632-.326 3.536-1.523 5.366-3.123c.979.098 1.97.166 2.985.166c.108 0 .214-.008.322-.01c3.195 1.748 6.896 3.053 9.484 3.053c.475 0 .922-.041 1.328-.121c.271-.055.523-.125.78-.191L44.984 62h13.971l-8.783-9.758c-.02-.242-.053-.49-.09-.738c3.104-2.873 5.037-6.492 5.221-10.453C59.116 40.324 62 36.984 62 32.969m-53.1 5.17c-2.31-.602-4.023-2.676-4.023-5.169c0-2.417 1.613-4.436 3.816-5.104c.05 2.161.62 4.228 1.615 6.131A14.4 14.4 0 0 0 8.9 38.139m14.456 21.345a10.2 10.2 0 0 1-2.011.211c-5.05 0-8.439-4.395-5.613-16.262c.496-2.088.997-2.801 1.519-2.801c1.114 0 2.321 3.248 3.775 3.248a1 1 0 0 0 .152-.012s3.978-3.66 7.976-3.66q.364 0 .728.043c1.546.184-2.749 3.898-5.089 5.818a49 49 0 0 1 3.097-2.227a1.7 1.7 0 0 0-.116.777q.012.118.035.236c-2.057.273-2.791 1.285-3.032 2.156c-.334 1.207.154 2.273 1.578 3.281q-.139.15-.253.336c-.226.371-.524 1.15.017 2.191c.497.959 1.526 2 2.847 3.012c-1.913 1.864-3.964 3.325-5.61 3.653m19.489-.035a5.4 5.4 0 0 1-1.038.094c-4.577 0-12.845-4.492-14.357-7.412c-.444-.855.252-1.156 1.447-1.156c1.263 0 3.082.336 4.697.703c-3.377-.984-7.827-2.615-7.372-4.264c.23-.832 1.313-1.129 2.739-1.129c2.3 0 5.492.771 7.44 1.309c-2.896-.883-8.281-2.682-6.922-3.441c1.229-.686 2.675-.914 4.06-.914c2.807 0 5.365.941 5.365.941c1.595-.379 1.304-4.529 2.618-4.529c.48 0 1.175.555 2.255 2.053c8.046 11.159 5.16 16.544-.932 17.745M31.406 41.938c.605-.23 1.164-.373 1.631-.373q.44 0 .76.18q-.128-.005-.258-.006a11.7 11.7 0 0 0-2.133.199m12.979-1.907c-1.072-1.318-1.937-1.881-2.862-1.881c-1.788 0-2.292 1.885-2.625 3.131c-.088.328-.228.852-.368 1.207a20 20 0 0 0-2.786-.592a2.6 2.6 0 0 0-.421-.793a2.7 2.7 0 0 0-.67-.592c.295-.355.494-1.01.494-1.766c0-1.133-.447-2.059-1-2.059c-.555 0-1 .926-1 2.059c0 .525.098.998.254 1.361c-.123-.014-.229-.043-.363-.043q-.602 0-1.343.203a2 2 0 0 0-.057-.234c-.126-.43-.42-.766-.8-.992c.007-.098.016-.193.016-.295c0-1.133-.447-2.059-1-2.059c-.551 0-.996.92-.999 2.045c-3.388.127-6.587 2.328-7.974 3.428c-.267-.275-.982-1.371-1.796-2.182c-2.433-2.42-7.106-7.035-7.106-11.773C11.979 11.271 32 22.059 32 22.059s20.021-10.788 20.021 6.146c0 4.699-3.14 9.066-7.636 11.826m9.306-6.035c.995-1.904 1.564-3.968 1.613-6.131c2.203.669 3.816 2.688 3.816 5.104c0 2.494-1.714 4.568-4.023 5.169a14.3 14.3 0 0 0-1.406-4.142"/><path fill="currentColor" d="M33.594 51.678c2.002.584 3.626.941 3.626.941s-1.663-.494-3.626-.941m2.807-4.084c1.019.313 1.729.51 1.729.51s-.686-.221-1.729-.51"/><ellipse cx="40.684" cy="31.746" fill="currentColor" rx="3.5" ry="4.5"/><ellipse cx="23.32" cy="31.746" fill="currentColor" rx="3.5" ry="4.5"/></svg>
|
||||||
|
After Width: | Height: | Size: 3.1 KiB |
|
|
@ -21,7 +21,7 @@ export function SplashScreen({ children }: SplashScreenProps) {
|
||||||
justifyContent="Center"
|
justifyContent="Center"
|
||||||
>
|
>
|
||||||
<Text size="H2" align="Center">
|
<Text size="H2" align="Center">
|
||||||
Cinny
|
Vojo
|
||||||
</Text>
|
</Text>
|
||||||
</Box>
|
</Box>
|
||||||
</Box>
|
</Box>
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ import { ASCIILexicalTable, orderKeys } from '../../utils/ASCIILexicalTable';
|
||||||
import { getStateEvent } from '../../utils/room';
|
import { getStateEvent } from '../../utils/room';
|
||||||
import { useClosedLobbyCategoriesAtom } from '../../state/hooks/closedLobbyCategories';
|
import { useClosedLobbyCategoriesAtom } from '../../state/hooks/closedLobbyCategories';
|
||||||
import {
|
import {
|
||||||
makeCinnySpacesContent,
|
makeVojoSpacesContent,
|
||||||
sidebarItemWithout,
|
sidebarItemWithout,
|
||||||
useSidebarItems,
|
useSidebarItems,
|
||||||
} from '../../hooks/useSidebarItems';
|
} from '../../hooks/useSidebarItems';
|
||||||
|
|
@ -421,8 +421,8 @@ export function Lobby() {
|
||||||
if (!sidebarSpaces.has(rId)) {
|
if (!sidebarSpaces.has(rId)) {
|
||||||
newItems.push(rId);
|
newItems.push(rId);
|
||||||
}
|
}
|
||||||
const newSpacesContent = makeCinnySpacesContent(mx, newItems);
|
const newSpacesContent = makeVojoSpacesContent(mx, newItems);
|
||||||
mx.setAccountData(AccountDataEvent.CinnySpaces as any, newSpacesContent as any);
|
mx.setAccountData(AccountDataEvent.VojoSpaces as any, newSpacesContent as any);
|
||||||
},
|
},
|
||||||
[mx, sidebarItems, sidebarSpaces]
|
[mx, sidebarItems, sidebarSpaces]
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import { Page, PageContent, PageHeader } from '../../../components/page';
|
||||||
import { SequenceCard } from '../../../components/sequence-card';
|
import { SequenceCard } from '../../../components/sequence-card';
|
||||||
import { SequenceCardStyle } from '../styles.css';
|
import { SequenceCardStyle } from '../styles.css';
|
||||||
import { SettingTile } from '../../../components/setting-tile';
|
import { SettingTile } from '../../../components/setting-tile';
|
||||||
import CinnySVG from '../../../../../public/res/svg/cinny.svg';
|
import VojoSVG from '../../../../../public/res/svg/vojo.svg';
|
||||||
import { clearCacheAndReload } from '../../../../client/initMatrix';
|
import { clearCacheAndReload } from '../../../../client/initMatrix';
|
||||||
import { useMatrixClient } from '../../../hooks/useMatrixClient';
|
import { useMatrixClient } from '../../../hooks/useMatrixClient';
|
||||||
|
|
||||||
|
|
@ -38,47 +38,19 @@ export function About({ requestClose }: AboutProps) {
|
||||||
<Box shrink="No">
|
<Box shrink="No">
|
||||||
<img
|
<img
|
||||||
style={{ width: toRem(60), height: toRem(60) }}
|
style={{ width: toRem(60), height: toRem(60) }}
|
||||||
src={CinnySVG}
|
src={VojoSVG}
|
||||||
alt="Cinny logo"
|
alt="Vojo logo"
|
||||||
/>
|
/>
|
||||||
</Box>
|
</Box>
|
||||||
<Box direction="Column" gap="300">
|
<Box direction="Column" gap="300">
|
||||||
<Box direction="Column" gap="100">
|
<Box direction="Column" gap="100">
|
||||||
<Box gap="100" alignItems="End">
|
<Box gap="100" alignItems="End">
|
||||||
<Text size="H3">Cinny</Text>
|
<Text size="H3">Vojo</Text>
|
||||||
<Text size="T200">v4.11.1</Text>
|
<Text size="T200">v4.11.1</Text>
|
||||||
</Box>
|
</Box>
|
||||||
<Text>Yet another matrix client.</Text>
|
<Text>Yet another matrix client.</Text>
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
<Box gap="200" wrap="Wrap">
|
|
||||||
<Button
|
|
||||||
as="a"
|
|
||||||
href="https://github.com/cinnyapp/cinny"
|
|
||||||
rel="noreferrer noopener"
|
|
||||||
target="_blank"
|
|
||||||
variant="Secondary"
|
|
||||||
fill="Soft"
|
|
||||||
size="300"
|
|
||||||
radii="300"
|
|
||||||
before={<Icon src={Icons.Code} size="100" filled />}
|
|
||||||
>
|
|
||||||
<Text size="B300">Source Code</Text>
|
|
||||||
</Button>
|
|
||||||
<Button
|
|
||||||
as="a"
|
|
||||||
href="https://cinny.in/#sponsor"
|
|
||||||
rel="noreferrer noopener"
|
|
||||||
target="_blank"
|
|
||||||
variant="Critical"
|
|
||||||
fill="Soft"
|
|
||||||
size="300"
|
|
||||||
radii="300"
|
|
||||||
before={<Icon src={Icons.Heart} size="100" filled />}
|
|
||||||
>
|
|
||||||
<Text size="B300">Support</Text>
|
|
||||||
</Button>
|
|
||||||
</Box>
|
|
||||||
</Box>
|
</Box>
|
||||||
</Box>
|
</Box>
|
||||||
<Box direction="Column" gap="100">
|
<Box direction="Column" gap="100">
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ function ExportKeys() {
|
||||||
const blob = new Blob([encKeys], {
|
const blob = new Blob([encKeys], {
|
||||||
type: 'text/plain;charset=us-ascii',
|
type: 'text/plain;charset=us-ascii',
|
||||||
});
|
});
|
||||||
FileSaver.saveAs(blob, 'cinny-keys.txt');
|
FileSaver.saveAs(blob, 'vojo-keys.txt');
|
||||||
},
|
},
|
||||||
[mx]
|
[mx]
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ function EmailNotification() {
|
||||||
device_display_name: email,
|
device_display_name: email,
|
||||||
lang: 'en',
|
lang: 'en',
|
||||||
data: {
|
data: {
|
||||||
brand: 'Cinny',
|
brand: 'Vojo',
|
||||||
},
|
},
|
||||||
append: true,
|
append: true,
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -87,11 +87,15 @@ const generateFallbackTag = (powerLevelTags: PowerLevelTags, power: number): Mem
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const LEGACY_CINNY_POWER_LEVEL_TAGS = 'in.cinny.room.power_level_tags' as StateEvent;
|
||||||
|
|
||||||
export const usePowerLevelTags = (room: Room, powerLevels: IPowerLevels): PowerLevelTags => {
|
export const usePowerLevelTags = (room: Room, powerLevels: IPowerLevels): PowerLevelTags => {
|
||||||
const tagsEvent = useStateEvent(room, StateEvent.PowerLevelTags);
|
const tagsEvent = useStateEvent(room, StateEvent.PowerLevelTags);
|
||||||
|
const legacyTagsEvent = useStateEvent(room, LEGACY_CINNY_POWER_LEVEL_TAGS);
|
||||||
|
const activeTagsEvent = tagsEvent ?? legacyTagsEvent;
|
||||||
|
|
||||||
const powerLevelTags: PowerLevelTags = useMemo(() => {
|
const powerLevelTags: PowerLevelTags = useMemo(() => {
|
||||||
const content = tagsEvent?.getContent<PowerLevelTags>();
|
const content = activeTagsEvent?.getContent<PowerLevelTags>();
|
||||||
const powerToTags: PowerLevelTags = { ...content };
|
const powerToTags: PowerLevelTags = { ...content };
|
||||||
|
|
||||||
const powers = getUsedPowers(powerLevels);
|
const powers = getUsedPowers(powerLevels);
|
||||||
|
|
@ -102,7 +106,7 @@ export const usePowerLevelTags = (room: Room, powerLevels: IPowerLevels): PowerL
|
||||||
});
|
});
|
||||||
|
|
||||||
return powerToTags;
|
return powerToTags;
|
||||||
}, [powerLevels, tagsEvent]);
|
}, [powerLevels, activeTagsEvent]);
|
||||||
|
|
||||||
return powerLevelTags;
|
return powerLevelTags;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ export type ISidebarFolder = {
|
||||||
export type TSidebarItem = string | ISidebarFolder;
|
export type TSidebarItem = string | ISidebarFolder;
|
||||||
export type SidebarItems = Array<TSidebarItem>;
|
export type SidebarItems = Array<TSidebarItem>;
|
||||||
|
|
||||||
export type InCinnySpacesContent = {
|
export type InVojoSpacesContent = {
|
||||||
shortcut?: string[];
|
shortcut?: string[];
|
||||||
sidebar?: SidebarItems;
|
sidebar?: SidebarItems;
|
||||||
};
|
};
|
||||||
|
|
@ -22,7 +22,7 @@ export type InCinnySpacesContent = {
|
||||||
export const parseSidebar = (
|
export const parseSidebar = (
|
||||||
mx: MatrixClient,
|
mx: MatrixClient,
|
||||||
orphanSpaces: string[],
|
orphanSpaces: string[],
|
||||||
content?: InCinnySpacesContent
|
content?: InVojoSpacesContent
|
||||||
) => {
|
) => {
|
||||||
const sidebar = content?.sidebar ?? content?.shortcut ?? [];
|
const sidebar = content?.sidebar ?? content?.shortcut ?? [];
|
||||||
const orphans = new Set(orphanSpaces);
|
const orphans = new Set(orphanSpaces);
|
||||||
|
|
@ -63,34 +63,34 @@ export const parseSidebar = (
|
||||||
return items;
|
return items;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const LEGACY_CINNY_SPACES = 'in.cinny.spaces';
|
||||||
|
|
||||||
|
const getSpacesContent = (mx: MatrixClient): InVojoSpacesContent | undefined =>
|
||||||
|
getAccountData(mx, AccountDataEvent.VojoSpaces)?.getContent<InVojoSpacesContent>() ??
|
||||||
|
getAccountData(mx, LEGACY_CINNY_SPACES as AccountDataEvent)?.getContent<InVojoSpacesContent>();
|
||||||
|
|
||||||
export const useSidebarItems = (
|
export const useSidebarItems = (
|
||||||
orphanSpaces: string[]
|
orphanSpaces: string[]
|
||||||
): [SidebarItems, Dispatch<SetStateAction<SidebarItems>>] => {
|
): [SidebarItems, Dispatch<SetStateAction<SidebarItems>>] => {
|
||||||
const mx = useMatrixClient();
|
const mx = useMatrixClient();
|
||||||
|
|
||||||
const [sidebarItems, setSidebarItems] = useState(() => {
|
const [sidebarItems, setSidebarItems] = useState(() =>
|
||||||
const inCinnySpacesContent = getAccountData(
|
parseSidebar(mx, orphanSpaces, getSpacesContent(mx))
|
||||||
mx,
|
);
|
||||||
AccountDataEvent.CinnySpaces
|
|
||||||
)?.getContent<InCinnySpacesContent>();
|
|
||||||
return parseSidebar(mx, orphanSpaces, inCinnySpacesContent);
|
|
||||||
});
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const inCinnySpacesContent = getAccountData(
|
setSidebarItems(parseSidebar(mx, orphanSpaces, getSpacesContent(mx)));
|
||||||
mx,
|
|
||||||
AccountDataEvent.CinnySpaces
|
|
||||||
)?.getContent<InCinnySpacesContent>();
|
|
||||||
setSidebarItems(parseSidebar(mx, orphanSpaces, inCinnySpacesContent));
|
|
||||||
}, [mx, orphanSpaces]);
|
}, [mx, orphanSpaces]);
|
||||||
|
|
||||||
useAccountDataCallback(
|
useAccountDataCallback(
|
||||||
mx,
|
mx,
|
||||||
useCallback(
|
useCallback(
|
||||||
(mEvent) => {
|
(mEvent) => {
|
||||||
if (mEvent.getType() === AccountDataEvent.CinnySpaces) {
|
if (
|
||||||
const newContent = mEvent.getContent<InCinnySpacesContent>();
|
mEvent.getType() === AccountDataEvent.VojoSpaces ||
|
||||||
setSidebarItems(parseSidebar(mx, orphanSpaces, newContent));
|
mEvent.getType() === LEGACY_CINNY_SPACES
|
||||||
|
) {
|
||||||
|
setSidebarItems(parseSidebar(mx, orphanSpaces, mEvent.getContent<InVojoSpacesContent>()));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[mx, orphanSpaces]
|
[mx, orphanSpaces]
|
||||||
|
|
@ -122,14 +122,13 @@ export const sidebarItemWithout = (items: SidebarItems, roomId: string) => {
|
||||||
return newItems;
|
return newItems;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const makeCinnySpacesContent = (
|
export const makeVojoSpacesContent = (
|
||||||
mx: MatrixClient,
|
mx: MatrixClient,
|
||||||
items: SidebarItems
|
items: SidebarItems
|
||||||
): InCinnySpacesContent => {
|
): InVojoSpacesContent => {
|
||||||
const currentInSpaces =
|
const currentInSpaces = getSpacesContent(mx) ?? {};
|
||||||
getAccountData(mx, AccountDataEvent.CinnySpaces)?.getContent<InCinnySpacesContent>() ?? {};
|
|
||||||
|
|
||||||
const newSpacesContent: InCinnySpacesContent = {
|
const newSpacesContent: InVojoSpacesContent = {
|
||||||
...currentInSpaces,
|
...currentInSpaces,
|
||||||
sidebar: items,
|
sidebar: items,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,7 @@ function RegisterUIAFlow({
|
||||||
auth: authDict,
|
auth: authDict,
|
||||||
password,
|
password,
|
||||||
username,
|
username,
|
||||||
initial_device_display_name: 'Cinny Web',
|
initial_device_display_name: 'Vojo Web',
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
[onRegister, formData]
|
[onRegister, formData]
|
||||||
|
|
@ -250,7 +250,7 @@ export function PasswordRegisterForm({
|
||||||
auth: {
|
auth: {
|
||||||
session: authData.session,
|
session: authData.session,
|
||||||
},
|
},
|
||||||
initial_device_display_name: 'Cinny Web',
|
initial_device_display_name: 'Vojo Web',
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@ import React, { ReactNode, useCallback, useEffect, useRef } from 'react';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
import { RoomEvent, RoomEventHandlerMap } from 'matrix-js-sdk';
|
import { RoomEvent, RoomEventHandlerMap } from 'matrix-js-sdk';
|
||||||
import { roomToUnreadAtom, unreadEqual, unreadInfoToUnread } from '../../state/room/roomToUnread';
|
import { roomToUnreadAtom, unreadEqual, unreadInfoToUnread } from '../../state/room/roomToUnread';
|
||||||
import LogoSVG from '../../../../public/res/svg/cinny.svg';
|
import LogoSVG from '../../../../public/res/svg/vojo.svg';
|
||||||
import LogoUnreadSVG from '../../../../public/res/svg/cinny-unread.svg';
|
import LogoUnreadSVG from '../../../../public/res/svg/vojo-unread.svg';
|
||||||
import LogoHighlightSVG from '../../../../public/res/svg/cinny-highlight.svg';
|
import LogoHighlightSVG from '../../../../public/res/svg/vojo-highlight.svg';
|
||||||
import NotificationSound from '../../../../public/sound/notification.ogg';
|
import NotificationSound from '../../../../public/sound/notification.ogg';
|
||||||
import InviteSound from '../../../../public/sound/invite.ogg';
|
import InviteSound from '../../../../public/sound/invite.ogg';
|
||||||
import { notificationPermission, setFavicon } from '../../utils/dom';
|
import { notificationPermission, setFavicon } from '../../utils/dom';
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Box, Button, Icon, Icons, Text, config, toRem } from 'folds';
|
import { Box, config } from 'folds';
|
||||||
import { Page, PageHero, PageHeroSection } from '../../components/page';
|
import { Page, PageHero, PageHeroSection } from '../../components/page';
|
||||||
import CinnySVG from '../../../../public/res/svg/cinny.svg';
|
import VojoSVG from '../../../../public/res/svg/vojo.svg';
|
||||||
|
|
||||||
export function WelcomePage() {
|
export function WelcomePage() {
|
||||||
return (
|
return (
|
||||||
|
|
@ -14,49 +14,10 @@ export function WelcomePage() {
|
||||||
>
|
>
|
||||||
<PageHeroSection>
|
<PageHeroSection>
|
||||||
<PageHero
|
<PageHero
|
||||||
icon={<img width="70" height="70" src={CinnySVG} alt="Cinny Logo" />}
|
icon={<img width="70" height="70" src={VojoSVG} alt="Vojo Logo" />}
|
||||||
title="Welcome to Cinny"
|
title="Welcome to Vojo"
|
||||||
subTitle={
|
subTitle={<span>v4.11.1</span>}
|
||||||
<span>
|
/>
|
||||||
Yet another matrix client.{' '}
|
|
||||||
<a
|
|
||||||
href="https://github.com/cinnyapp/cinny/releases"
|
|
||||||
target="_blank"
|
|
||||||
rel="noreferrer noopener"
|
|
||||||
>
|
|
||||||
v4.11.1
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<Box justifyContent="Center">
|
|
||||||
<Box grow="Yes" style={{ maxWidth: toRem(300) }} direction="Column" gap="300">
|
|
||||||
<Button
|
|
||||||
as="a"
|
|
||||||
href="https://github.com/cinnyapp/cinny"
|
|
||||||
target="_blank"
|
|
||||||
rel="noreferrer noopener"
|
|
||||||
before={<Icon size="200" src={Icons.Code} />}
|
|
||||||
>
|
|
||||||
<Text as="span" size="B400" truncate>
|
|
||||||
Source Code
|
|
||||||
</Text>
|
|
||||||
</Button>
|
|
||||||
<Button
|
|
||||||
as="a"
|
|
||||||
href="https://cinny.in/#sponsor"
|
|
||||||
target="_blank"
|
|
||||||
rel="noreferrer noopener"
|
|
||||||
fill="Soft"
|
|
||||||
before={<Icon size="200" src={Icons.Heart} />}
|
|
||||||
>
|
|
||||||
<Text as="span" size="B400" truncate>
|
|
||||||
Support
|
|
||||||
</Text>
|
|
||||||
</Button>
|
|
||||||
</Box>
|
|
||||||
</Box>
|
|
||||||
</PageHero>
|
|
||||||
</PageHeroSection>
|
</PageHeroSection>
|
||||||
</Box>
|
</Box>
|
||||||
</Page>
|
</Page>
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ import {
|
||||||
ISidebarFolder,
|
ISidebarFolder,
|
||||||
SidebarItems,
|
SidebarItems,
|
||||||
TSidebarItem,
|
TSidebarItem,
|
||||||
makeCinnySpacesContent,
|
makeVojoSpacesContent,
|
||||||
parseSidebar,
|
parseSidebar,
|
||||||
sidebarItemWithout,
|
sidebarItemWithout,
|
||||||
useSidebarItems,
|
useSidebarItems,
|
||||||
|
|
@ -744,9 +744,9 @@ export function SpaceTabs({ scrollRef }: SpaceTabsProps) {
|
||||||
newItems.push(i);
|
newItems.push(i);
|
||||||
});
|
});
|
||||||
|
|
||||||
const newSpacesContent = makeCinnySpacesContent(mx, newItems);
|
const newSpacesContent = makeVojoSpacesContent(mx, newItems);
|
||||||
localEchoSidebarItem(parseSidebar(mx, orphanSpaces, newSpacesContent));
|
localEchoSidebarItem(parseSidebar(mx, orphanSpaces, newSpacesContent));
|
||||||
mx.setAccountData(AccountDataEvent.CinnySpaces, newSpacesContent);
|
mx.setAccountData(AccountDataEvent.VojoSpaces, newSpacesContent);
|
||||||
},
|
},
|
||||||
[mx, sidebarItems, setOpenedFolder, localEchoSidebarItem, orphanSpaces]
|
[mx, sidebarItems, setOpenedFolder, localEchoSidebarItem, orphanSpaces]
|
||||||
)
|
)
|
||||||
|
|
@ -790,9 +790,9 @@ export function SpaceTabs({ scrollRef }: SpaceTabsProps) {
|
||||||
if (orphanSpaces.includes(roomId)) return;
|
if (orphanSpaces.includes(roomId)) return;
|
||||||
const newItems = sidebarItemWithout(sidebarItems, roomId);
|
const newItems = sidebarItemWithout(sidebarItems, roomId);
|
||||||
|
|
||||||
const newSpacesContent = makeCinnySpacesContent(mx, newItems);
|
const newSpacesContent = makeVojoSpacesContent(mx, newItems);
|
||||||
localEchoSidebarItem(parseSidebar(mx, orphanSpaces, newSpacesContent));
|
localEchoSidebarItem(parseSidebar(mx, orphanSpaces, newSpacesContent));
|
||||||
mx.setAccountData(AccountDataEvent.CinnySpaces, newSpacesContent);
|
mx.setAccountData(AccountDataEvent.VojoSpaces, newSpacesContent);
|
||||||
},
|
},
|
||||||
[mx, sidebarItems, orphanSpaces, localEchoSidebarItem]
|
[mx, sidebarItems, orphanSpaces, localEchoSidebarItem]
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -29,28 +29,54 @@ export type SessionStoreName = {
|
||||||
// crypto: 'crypto-store',
|
// crypto: 'crypto-store',
|
||||||
// } as const;
|
// } as const;
|
||||||
|
|
||||||
|
const LEGACY_CINNY_KEYS = {
|
||||||
|
access_token: 'cinny_access_token',
|
||||||
|
device_id: 'cinny_device_id',
|
||||||
|
user_id: 'cinny_user_id',
|
||||||
|
hs_base_url: 'cinny_hs_base_url',
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
function migrateLegacyCinnySession() {
|
||||||
|
if (localStorage.getItem('vojo_access_token') !== null) return;
|
||||||
|
|
||||||
|
const accessToken = localStorage.getItem(LEGACY_CINNY_KEYS.access_token);
|
||||||
|
const deviceId = localStorage.getItem(LEGACY_CINNY_KEYS.device_id);
|
||||||
|
const userId = localStorage.getItem(LEGACY_CINNY_KEYS.user_id);
|
||||||
|
const baseUrl = localStorage.getItem(LEGACY_CINNY_KEYS.hs_base_url);
|
||||||
|
|
||||||
|
if (accessToken && deviceId && userId && baseUrl) {
|
||||||
|
localStorage.setItem('vojo_access_token', accessToken);
|
||||||
|
localStorage.setItem('vojo_device_id', deviceId);
|
||||||
|
localStorage.setItem('vojo_user_id', userId);
|
||||||
|
localStorage.setItem('vojo_hs_base_url', baseUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.values(LEGACY_CINNY_KEYS).forEach((key) => localStorage.removeItem(key));
|
||||||
|
}
|
||||||
|
|
||||||
export function setFallbackSession(
|
export function setFallbackSession(
|
||||||
accessToken: string,
|
accessToken: string,
|
||||||
deviceId: string,
|
deviceId: string,
|
||||||
userId: string,
|
userId: string,
|
||||||
baseUrl: string
|
baseUrl: string
|
||||||
) {
|
) {
|
||||||
localStorage.setItem('cinny_access_token', accessToken);
|
localStorage.setItem('vojo_access_token', accessToken);
|
||||||
localStorage.setItem('cinny_device_id', deviceId);
|
localStorage.setItem('vojo_device_id', deviceId);
|
||||||
localStorage.setItem('cinny_user_id', userId);
|
localStorage.setItem('vojo_user_id', userId);
|
||||||
localStorage.setItem('cinny_hs_base_url', baseUrl);
|
localStorage.setItem('vojo_hs_base_url', baseUrl);
|
||||||
}
|
}
|
||||||
export const removeFallbackSession = () => {
|
export const removeFallbackSession = () => {
|
||||||
localStorage.removeItem('cinny_hs_base_url');
|
localStorage.removeItem('vojo_hs_base_url');
|
||||||
localStorage.removeItem('cinny_user_id');
|
localStorage.removeItem('vojo_user_id');
|
||||||
localStorage.removeItem('cinny_device_id');
|
localStorage.removeItem('vojo_device_id');
|
||||||
localStorage.removeItem('cinny_access_token');
|
localStorage.removeItem('vojo_access_token');
|
||||||
};
|
};
|
||||||
export const getFallbackSession = (): Session | undefined => {
|
export const getFallbackSession = (): Session | undefined => {
|
||||||
const baseUrl = localStorage.getItem('cinny_hs_base_url');
|
migrateLegacyCinnySession();
|
||||||
const userId = localStorage.getItem('cinny_user_id');
|
const baseUrl = localStorage.getItem('vojo_hs_base_url');
|
||||||
const deviceId = localStorage.getItem('cinny_device_id');
|
const userId = localStorage.getItem('vojo_user_id');
|
||||||
const accessToken = localStorage.getItem('cinny_access_token');
|
const deviceId = localStorage.getItem('vojo_device_id');
|
||||||
|
const accessToken = localStorage.getItem('vojo_access_token');
|
||||||
|
|
||||||
if (baseUrl && userId && deviceId && accessToken) {
|
if (baseUrl && userId && deviceId && accessToken) {
|
||||||
const session: Session = {
|
const session: Session = {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ export enum AccountDataEvent {
|
||||||
Direct = 'm.direct',
|
Direct = 'm.direct',
|
||||||
IgnoredUserList = 'm.ignored_user_list',
|
IgnoredUserList = 'm.ignored_user_list',
|
||||||
|
|
||||||
CinnySpaces = 'in.cinny.spaces',
|
VojoSpaces = 'in.vojo.spaces',
|
||||||
|
|
||||||
ElementRecentEmoji = 'io.element.recent_emoji',
|
ElementRecentEmoji = 'io.element.recent_emoji',
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ export enum StateEvent {
|
||||||
SpaceParent = 'm.space.parent',
|
SpaceParent = 'm.space.parent',
|
||||||
|
|
||||||
PoniesRoomEmotes = 'im.ponies.room_emotes',
|
PoniesRoomEmotes = 'im.ponies.room_emotes',
|
||||||
PowerLevelTags = 'in.cinny.room.power_level_tags',
|
PowerLevelTags = 'in.vojo.room.power_level_tags',
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum MessageEvent {
|
export enum MessageEvent {
|
||||||
|
|
|
||||||