🚀 Launch v1.0 pre-alpha testing
@@ -1,41 +1,46 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="utf-8"?>
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
 | 
					<manifest xmlns:android="http://schemas.android.com/apk/res/android">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <application
 | 
					  <application
 | 
				
			||||||
        android:allowBackup="true"
 | 
					    android:allowBackup="true"
 | 
				
			||||||
        android:icon="@mipmap/ic_launcher"
 | 
					    android:icon="@mipmap/ic_launcher"
 | 
				
			||||||
        android:label="@string/app_name"
 | 
					    android:label="@string/app_name"
 | 
				
			||||||
        android:roundIcon="@mipmap/ic_launcher_round"
 | 
					    android:roundIcon="@mipmap/ic_launcher_round"
 | 
				
			||||||
        android:supportsRtl="true"
 | 
					    android:supportsRtl="true"
 | 
				
			||||||
        android:theme="@style/AppTheme">
 | 
					    android:theme="@style/AppTheme">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <activity
 | 
					    <activity
 | 
				
			||||||
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode"
 | 
					      android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode"
 | 
				
			||||||
            android:name=".MainActivity"
 | 
					      android:name=".MainActivity"
 | 
				
			||||||
            android:label="@string/title_activity_main"
 | 
					      android:label="@string/title_activity_main"
 | 
				
			||||||
            android:theme="@style/AppTheme.NoActionBarLaunch"
 | 
					      android:theme="@style/AppTheme.NoActionBarLaunch"
 | 
				
			||||||
            android:launchMode="singleTask"
 | 
					      android:launchMode="singleTask"
 | 
				
			||||||
            android:exported="true">
 | 
					      android:exported="true">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <intent-filter>
 | 
					      <intent-filter>
 | 
				
			||||||
                <action android:name="android.intent.action.MAIN" />
 | 
					        <action android:name="android.intent.action.MAIN" />
 | 
				
			||||||
                <category android:name="android.intent.category.LAUNCHER" />
 | 
					        <category android:name="android.intent.category.LAUNCHER" />
 | 
				
			||||||
            </intent-filter>
 | 
					      </intent-filter>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        </activity>
 | 
					    </activity>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <provider
 | 
					    <provider
 | 
				
			||||||
            android:name="androidx.core.content.FileProvider"
 | 
					      android:name="androidx.core.content.FileProvider"
 | 
				
			||||||
            android:authorities="${applicationId}.fileprovider"
 | 
					      android:authorities="${applicationId}.fileprovider"
 | 
				
			||||||
            android:exported="false"
 | 
					      android:exported="false"
 | 
				
			||||||
            android:grantUriPermissions="true">
 | 
					      android:grantUriPermissions="true">
 | 
				
			||||||
            <meta-data
 | 
					      <meta-data
 | 
				
			||||||
                android:name="android.support.FILE_PROVIDER_PATHS"
 | 
					        android:name="android.support.FILE_PROVIDER_PATHS"
 | 
				
			||||||
                android:resource="@xml/file_paths"></meta-data>
 | 
					        android:resource="@xml/file_paths"></meta-data>
 | 
				
			||||||
        </provider>
 | 
					    </provider>
 | 
				
			||||||
    </application>
 | 
					  </application>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- Permissions -->
 | 
					  <!-- Permissions -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <uses-permission android:name="android.permission.INTERNET" />
 | 
					  <uses-permission android:name="android.permission.INTERNET" />
 | 
				
			||||||
 | 
					  <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
 | 
				
			||||||
 | 
					  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
 | 
				
			||||||
 | 
					    android:maxSdkVersion="32" />
 | 
				
			||||||
 | 
					  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
 | 
				
			||||||
 | 
					    android:maxSdkVersion="29" />
 | 
				
			||||||
</manifest>
 | 
					</manifest>
 | 
				
			||||||
 
 | 
				
			|||||||
| 
		 Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB  | 
| 
		 Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 3.4 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-ldpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 845 B  | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.6 KiB  | 
| 
		 Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.4 KiB  | 
| 
		 Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.1 KiB  | 
| 
		 Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 4.1 KiB  | 
| 
		 Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 4.5 KiB  | 
| 
		 Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.9 KiB  | 
| 
		 Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 6.9 KiB  | 
| 
		 Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 10 KiB  | 
| 
		 Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 9.7 KiB  | 
@@ -7,7 +7,7 @@ buildscript {
 | 
				
			|||||||
        mavenCentral()
 | 
					        mavenCentral()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    dependencies {
 | 
					    dependencies {
 | 
				
			||||||
        classpath 'com.android.tools.build:gradle:8.0.0'
 | 
					        classpath 'com.android.tools.build:gradle:8.3.1'
 | 
				
			||||||
        classpath 'com.google.gms:google-services:4.3.15'
 | 
					        classpath 'com.google.gms:google-services:4.3.15'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // NOTE: Do not place your application dependencies here; they belong
 | 
					        // NOTE: Do not place your application dependencies here; they belong
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
distributionBase=GRADLE_USER_HOME
 | 
					distributionBase=GRADLE_USER_HOME
 | 
				
			||||||
distributionPath=wrapper/dists
 | 
					distributionPath=wrapper/dists
 | 
				
			||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-all.zip
 | 
					distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
 | 
				
			||||||
networkTimeout=10000
 | 
					networkTimeout=10000
 | 
				
			||||||
zipStoreBase=GRADLE_USER_HOME
 | 
					zipStoreBase=GRADLE_USER_HOME
 | 
				
			||||||
zipStorePath=wrapper/dists
 | 
					zipStorePath=wrapper/dists
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,8 +6,6 @@ const config: CapacitorConfig = {
 | 
				
			|||||||
  webDir: "dist",
 | 
					  webDir: "dist",
 | 
				
			||||||
  server: {
 | 
					  server: {
 | 
				
			||||||
    androidScheme: "https",
 | 
					    androidScheme: "https",
 | 
				
			||||||
    url: "http://localhost:5173",
 | 
					 | 
				
			||||||
    cleartext: true
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -122,8 +122,8 @@
 | 
				
			|||||||
		504EC2FC1FED79650016851F /* Project object */ = {
 | 
							504EC2FC1FED79650016851F /* Project object */ = {
 | 
				
			||||||
			isa = PBXProject;
 | 
								isa = PBXProject;
 | 
				
			||||||
			attributes = {
 | 
								attributes = {
 | 
				
			||||||
				LastSwiftUpdateCheck = 0920;
 | 
									LastSwiftUpdateCheck = 920;
 | 
				
			||||||
				LastUpgradeCheck = 0920;
 | 
									LastUpgradeCheck = 920;
 | 
				
			||||||
				TargetAttributes = {
 | 
									TargetAttributes = {
 | 
				
			||||||
					504EC3031FED79650016851F = {
 | 
										504EC3031FED79650016851F = {
 | 
				
			||||||
						CreatedOnToolsVersion = 9.2;
 | 
											CreatedOnToolsVersion = 9.2;
 | 
				
			||||||
@@ -347,6 +347,7 @@
 | 
				
			|||||||
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 | 
									ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 | 
				
			||||||
				CODE_SIGN_STYLE = Automatic;
 | 
									CODE_SIGN_STYLE = Automatic;
 | 
				
			||||||
				CURRENT_PROJECT_VERSION = 1;
 | 
									CURRENT_PROJECT_VERSION = 1;
 | 
				
			||||||
 | 
									DEVELOPMENT_TEAM = W7HPZ53V6B;
 | 
				
			||||||
				INFOPLIST_FILE = App/Info.plist;
 | 
									INFOPLIST_FILE = App/Info.plist;
 | 
				
			||||||
				INFOPLIST_KEY_CFBundleDisplayName = Solian;
 | 
									INFOPLIST_KEY_CFBundleDisplayName = Solian;
 | 
				
			||||||
				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 | 
									IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 | 
				
			||||||
@@ -368,6 +369,7 @@
 | 
				
			|||||||
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 | 
									ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 | 
				
			||||||
				CODE_SIGN_STYLE = Automatic;
 | 
									CODE_SIGN_STYLE = Automatic;
 | 
				
			||||||
				CURRENT_PROJECT_VERSION = 1;
 | 
									CURRENT_PROJECT_VERSION = 1;
 | 
				
			||||||
 | 
									DEVELOPMENT_TEAM = W7HPZ53V6B;
 | 
				
			||||||
				INFOPLIST_FILE = App/Info.plist;
 | 
									INFOPLIST_FILE = App/Info.plist;
 | 
				
			||||||
				INFOPLIST_KEY_CFBundleDisplayName = Solian;
 | 
									INFOPLIST_KEY_CFBundleDisplayName = Solian;
 | 
				
			||||||
				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 | 
									IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 | 
				
			||||||
 
 | 
				
			|||||||
| 
		 Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 48 KiB  | 
@@ -1,14 +1,14 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "images" : [
 | 
					  "images": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "filename" : "AppIcon-512@2x.png",
 | 
					      "idiom": "universal",
 | 
				
			||||||
      "idiom" : "universal",
 | 
					      "size": "1024x1024",
 | 
				
			||||||
      "platform" : "ios",
 | 
					      "filename": "AppIcon-512@2x.png",
 | 
				
			||||||
      "size" : "1024x1024"
 | 
					      "platform": "ios"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "info" : {
 | 
					  "info": {
 | 
				
			||||||
    "author" : "xcode",
 | 
					    "author": "xcode",
 | 
				
			||||||
    "version" : 1
 | 
					    "version": 1
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,23 +1,56 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "images" : [
 | 
					  "images": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "idiom" : "universal",
 | 
					      "idiom": "universal",
 | 
				
			||||||
      "filename" : "splash-2732x2732-2.png",
 | 
					      "filename": "Default@1x~universal~anyany.png",
 | 
				
			||||||
      "scale" : "1x"
 | 
					      "scale": "1x"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "idiom" : "universal",
 | 
					      "idiom": "universal",
 | 
				
			||||||
      "filename" : "splash-2732x2732-1.png",
 | 
					      "filename": "Default@2x~universal~anyany.png",
 | 
				
			||||||
      "scale" : "2x"
 | 
					      "scale": "2x"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "idiom" : "universal",
 | 
					      "idiom": "universal",
 | 
				
			||||||
      "filename" : "splash-2732x2732.png",
 | 
					      "filename": "Default@3x~universal~anyany.png",
 | 
				
			||||||
      "scale" : "3x"
 | 
					      "scale": "3x"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "appearances": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "appearance": "luminosity",
 | 
				
			||||||
 | 
					          "value": "dark"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "idiom": "universal",
 | 
				
			||||||
 | 
					      "scale": "1x",
 | 
				
			||||||
 | 
					      "filename": "Default@1x~universal~anyany-dark.png"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "appearances": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "appearance": "luminosity",
 | 
				
			||||||
 | 
					          "value": "dark"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "idiom": "universal",
 | 
				
			||||||
 | 
					      "scale": "2x",
 | 
				
			||||||
 | 
					      "filename": "Default@2x~universal~anyany-dark.png"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "appearances": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "appearance": "luminosity",
 | 
				
			||||||
 | 
					          "value": "dark"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "idiom": "universal",
 | 
				
			||||||
 | 
					      "scale": "3x",
 | 
				
			||||||
 | 
					      "filename": "Default@3x~universal~anyany-dark.png"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "info" : {
 | 
					  "info": {
 | 
				
			||||||
    "version" : 1,
 | 
					    "version": 1,
 | 
				
			||||||
    "author" : "xcode"
 | 
					    "author": "xcode"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany-dark.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 34 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 50 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany-dark.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 34 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 50 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany-dark.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 34 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 50 KiB  | 
@@ -43,7 +43,15 @@
 | 
				
			|||||||
		<string>UIInterfaceOrientationLandscapeLeft</string>
 | 
							<string>UIInterfaceOrientationLandscapeLeft</string>
 | 
				
			||||||
		<string>UIInterfaceOrientationLandscapeRight</string>
 | 
							<string>UIInterfaceOrientationLandscapeRight</string>
 | 
				
			||||||
	</array>
 | 
						</array>
 | 
				
			||||||
 | 
						<key>LSApplicationCategoryType</key>
 | 
				
			||||||
 | 
						<string></string>
 | 
				
			||||||
	<key>UIViewControllerBasedStatusBarAppearance</key>
 | 
						<key>UIViewControllerBasedStatusBarAppearance</key>
 | 
				
			||||||
	<false/>
 | 
						<false/>
 | 
				
			||||||
 | 
						<key>NSPhotoLibraryAddUsageDescription</key>
 | 
				
			||||||
 | 
						<string>Allow Solian full access your photo library so that you can share photos more easily.</string>
 | 
				
			||||||
 | 
						<key>NSPhotoLibraryUsageDescription</key>
 | 
				
			||||||
 | 
						<string>Allow Solian access your photo library so that you can share photos.</string>
 | 
				
			||||||
 | 
						<key>NSCameraUsageDescription</key>
 | 
				
			||||||
 | 
						<string>Allow Solian use your camera so that you can take photo for your post.</string>
 | 
				
			||||||
</dict>
 | 
					</dict>
 | 
				
			||||||
</plist>
 | 
					</plist>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,6 +29,7 @@
 | 
				
			|||||||
    "vuetify": "^3.5.12"
 | 
					    "vuetify": "^3.5.12"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
 | 
					    "@capacitor/assets": "^3.0.4",
 | 
				
			||||||
    "@capacitor/cli": "^5.7.4",
 | 
					    "@capacitor/cli": "^5.7.4",
 | 
				
			||||||
    "@rushstack/eslint-patch": "^1.3.3",
 | 
					    "@rushstack/eslint-patch": "^1.3.3",
 | 
				
			||||||
    "@tsconfig/node20": "^20.1.2",
 | 
					    "@tsconfig/node20": "^20.1.2",
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										46
									
								
								public/manifest.webmanifest
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "icons": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "src": "../icons/icon-48.webp",
 | 
				
			||||||
 | 
					      "type": "image/png",
 | 
				
			||||||
 | 
					      "sizes": "48x48",
 | 
				
			||||||
 | 
					      "purpose": "any maskable"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "src": "../icons/icon-72.webp",
 | 
				
			||||||
 | 
					      "type": "image/png",
 | 
				
			||||||
 | 
					      "sizes": "72x72",
 | 
				
			||||||
 | 
					      "purpose": "any maskable"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "src": "../icons/icon-96.webp",
 | 
				
			||||||
 | 
					      "type": "image/png",
 | 
				
			||||||
 | 
					      "sizes": "96x96",
 | 
				
			||||||
 | 
					      "purpose": "any maskable"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "src": "../icons/icon-128.webp",
 | 
				
			||||||
 | 
					      "type": "image/png",
 | 
				
			||||||
 | 
					      "sizes": "128x128",
 | 
				
			||||||
 | 
					      "purpose": "any maskable"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "src": "../icons/icon-192.webp",
 | 
				
			||||||
 | 
					      "type": "image/png",
 | 
				
			||||||
 | 
					      "sizes": "192x192",
 | 
				
			||||||
 | 
					      "purpose": "any maskable"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "src": "../icons/icon-256.webp",
 | 
				
			||||||
 | 
					      "type": "image/png",
 | 
				
			||||||
 | 
					      "sizes": "256x256",
 | 
				
			||||||
 | 
					      "purpose": "any maskable"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "src": "../icons/icon-512.webp",
 | 
				
			||||||
 | 
					      "type": "image/png",
 | 
				
			||||||
 | 
					      "sizes": "512x512",
 | 
				
			||||||
 | 
					      "purpose": "any maskable"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								resources/icon-background.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 17 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/icon-foreground.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 70 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/icon-only.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 70 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/splash-dark.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 112 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/splash.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 134 KiB  | 
@@ -1,6 +1,6 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <v-app>
 | 
					  <v-app>
 | 
				
			||||||
    <v-system-bar v-if="safeAreaHeight > 0" color="primary" :order="1" :height="safeAreaHeight" />
 | 
					    <v-system-bar v-show="ui.safeArea.top > 0" color="primary" :order="1" :height="ui.safeArea.top" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <router-view />
 | 
					    <router-view />
 | 
				
			||||||
  </v-app>
 | 
					  </v-app>
 | 
				
			||||||
@@ -8,13 +8,22 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<script setup lang="ts">
 | 
					<script setup lang="ts">
 | 
				
			||||||
import { onMounted, ref } from "vue"
 | 
					import { onMounted, ref } from "vue"
 | 
				
			||||||
 | 
					import { Capacitor } from "@capacitor/core"
 | 
				
			||||||
 | 
					import { useUI } from "@/stores/ui"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const safeAreaHeight = ref(0)
 | 
					const ui = useUI()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function updateSafeArea() {
 | 
					function updateSafeArea() {
 | 
				
			||||||
  const property = getComputedStyle(document.documentElement).getPropertyValue("--safe-area-top")
 | 
					  const topProperty = getComputedStyle(document.documentElement).getPropertyValue("--safe-area-top")
 | 
				
			||||||
  safeAreaHeight.value = parseInt(property.replace("px", ""))
 | 
					  ui.safeArea.top = parseInt(topProperty.replace("px", ""))
 | 
				
			||||||
 | 
					  const bottomProperty = getComputedStyle(document.documentElement).getPropertyValue("--safe-area-top")
 | 
				
			||||||
 | 
					  ui.safeArea.bottom = parseInt(bottomProperty.replace("px", ""))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
onMounted(() => updateSafeArea())
 | 
					onMounted(() => {
 | 
				
			||||||
 | 
					  updateSafeArea()
 | 
				
			||||||
 | 
					  for (let idx = 1; idx <= 10; idx++) {
 | 
				
			||||||
 | 
					    setTimeout(() => updateSafeArea(), 250 * idx)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,8 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <v-navigation-drawer v-model="drawerOpen" color="grey-lighten-5" width="320" :order="0" floating>
 | 
					  <v-navigation-drawer v-model="drawerOpen" color="grey-lighten-5" width="320" :order="0" floating>
 | 
				
			||||||
    <div class="flex flex-col h-full">
 | 
					    <div class="flex flex-col h-full">
 | 
				
			||||||
      <div
 | 
					      <div class="flex items-center px-3 pb-2.5 border-opacity-15" style="border-bottom-width: thin"
 | 
				
			||||||
        class="flex items-center px-3 pb-2.5 border-opacity-15"
 | 
					        :style="`padding-top: max(${safeAreaTop}, 16px)`">
 | 
				
			||||||
        style="border-bottom-width: thin"
 | 
					 | 
				
			||||||
        :style="`padding-top: max(${safeAreaTop}, 16px)`"
 | 
					 | 
				
			||||||
      >
 | 
					 | 
				
			||||||
        <img src="/favicon.png" width="36" height="36" class="block" />
 | 
					        <img src="/favicon.png" width="36" height="36" class="block" />
 | 
				
			||||||
        <div class="ms-6 font-medium">Solar Network</div>
 | 
					        <div class="ms-6 font-medium">Solar Network</div>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
@@ -15,14 +12,11 @@
 | 
				
			|||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <!-- User info -->
 | 
					      <!-- User info -->
 | 
				
			||||||
      <v-list
 | 
					      <v-list class="border-opacity-15 h-[64px]" style="border-top-width: thin"
 | 
				
			||||||
        class="border-opacity-15 h-[64px]"
 | 
					        :style="`margin-bottom: ${safeAreaBottom}`">
 | 
				
			||||||
        style="border-top-width: thin"
 | 
					 | 
				
			||||||
        :style="`margin-bottom: ${safeAreaBottom}`"
 | 
					 | 
				
			||||||
      >
 | 
					 | 
				
			||||||
        <v-list-item :subtitle="username" :title="nickname">
 | 
					        <v-list-item :subtitle="username" :title="nickname">
 | 
				
			||||||
          <template #prepend>
 | 
					          <template #prepend>
 | 
				
			||||||
            <v-avatar icon="mdi-account-circle" :image="id.userinfo.data?.avatar" />
 | 
					            <v-avatar icon="mdi-account-circle" :image="id.userinfo.data?.picture" />
 | 
				
			||||||
          </template>
 | 
					          </template>
 | 
				
			||||||
          <template #append>
 | 
					          <template #append>
 | 
				
			||||||
            <v-menu v-if="id.userinfo.isLoggedIn">
 | 
					            <v-menu v-if="id.userinfo.isLoggedIn">
 | 
				
			||||||
@@ -31,12 +25,8 @@
 | 
				
			|||||||
              </template>
 | 
					              </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
              <v-list density="compact">
 | 
					              <v-list density="compact">
 | 
				
			||||||
                <v-list-item
 | 
					                <v-list-item title="Solarpass" prepend-icon="mdi-passport-biometric" target="_blank"
 | 
				
			||||||
                  title="Solarpass"
 | 
					                  :href="passportUrl" />
 | 
				
			||||||
                  prepend-icon="mdi-passport-biometric"
 | 
					 | 
				
			||||||
                  target="_blank"
 | 
					 | 
				
			||||||
                  :href="passportUrl"
 | 
					 | 
				
			||||||
                />
 | 
					 | 
				
			||||||
              </v-list>
 | 
					              </v-list>
 | 
				
			||||||
            </v-menu>
 | 
					            </v-menu>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -58,7 +48,7 @@
 | 
				
			|||||||
      <v-spacer />
 | 
					      <v-spacer />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <div v-if="id.userinfo.isLoggedIn">
 | 
					      <div v-if="id.userinfo.isLoggedIn">
 | 
				
			||||||
          <notification-list />
 | 
					        <notification-list />
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
  </v-app-bar>
 | 
					  </v-app-bar>
 | 
				
			||||||
@@ -67,24 +57,11 @@
 | 
				
			|||||||
    <router-view />
 | 
					    <router-view />
 | 
				
			||||||
  </v-main>
 | 
					  </v-main>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <v-menu
 | 
					  <v-menu open-on-hover open-on-click :open-delay="0" :close-delay="0" location="top"
 | 
				
			||||||
    open-on-hover
 | 
					    transition="scroll-y-reverse-transition">
 | 
				
			||||||
    open-on-click
 | 
					 | 
				
			||||||
    :open-delay="0"
 | 
					 | 
				
			||||||
    :close-delay="0"
 | 
					 | 
				
			||||||
    location="top"
 | 
					 | 
				
			||||||
    transition="scroll-y-reverse-transition"
 | 
					 | 
				
			||||||
  >
 | 
					 | 
				
			||||||
    <template v-slot:activator="{ props }">
 | 
					    <template v-slot:activator="{ props }">
 | 
				
			||||||
      <v-fab
 | 
					      <v-fab v-bind="props" appear class="editor-fab" icon="mdi-pencil" color="primary" size="64"
 | 
				
			||||||
        v-bind="props"
 | 
					        :active="id.userinfo.isLoggedIn" />
 | 
				
			||||||
        appear
 | 
					 | 
				
			||||||
        class="editor-fab"
 | 
					 | 
				
			||||||
        icon="mdi-pencil"
 | 
					 | 
				
			||||||
        color="primary"
 | 
					 | 
				
			||||||
        size="64"
 | 
					 | 
				
			||||||
        :active="id.userinfo.isLoggedIn"
 | 
					 | 
				
			||||||
      />
 | 
					 | 
				
			||||||
    </template>
 | 
					    </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <div class="flex flex-col items-center gap-4 mb-4">
 | 
					    <div class="flex flex-col items-center gap-4 mb-4">
 | 
				
			||||||
@@ -102,17 +79,20 @@ import { computed, ref } from "vue"
 | 
				
			|||||||
import { useEditor } from "@/stores/editor"
 | 
					import { useEditor } from "@/stores/editor"
 | 
				
			||||||
import { useUserinfo } from "@/stores/userinfo"
 | 
					import { useUserinfo } from "@/stores/userinfo"
 | 
				
			||||||
import { useWellKnown } from "@/stores/wellKnown"
 | 
					import { useWellKnown } from "@/stores/wellKnown"
 | 
				
			||||||
 | 
					import { useUI } from "@/stores/ui"
 | 
				
			||||||
import PostTools from "@/components/publish/PostTools.vue"
 | 
					import PostTools from "@/components/publish/PostTools.vue"
 | 
				
			||||||
import RealmTools from "@/components/realms/RealmTools.vue"
 | 
					import RealmTools from "@/components/realms/RealmTools.vue"
 | 
				
			||||||
import RealmList from "@/components/realms/RealmList.vue"
 | 
					import RealmList from "@/components/realms/RealmList.vue"
 | 
				
			||||||
import NotificationList from "@/components/NotificationList.vue"
 | 
					import NotificationList from "@/components/NotificationList.vue"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const ui = useUI()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const safeAreaTop = computed(() => {
 | 
					const safeAreaTop = computed(() => {
 | 
				
			||||||
  return getComputedStyle(document.documentElement).getPropertyValue("--safe-area-top")
 | 
					  return `${ui.safeArea.top}px`
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const safeAreaBottom = computed(() => {
 | 
					const safeAreaBottom = computed(() => {
 | 
				
			||||||
  return getComputedStyle(document.documentElement).getPropertyValue("--safe-area-bottom")
 | 
					  return `${ui.safeArea.bottom}px`
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const id = useUserinfo()
 | 
					const id = useUserinfo()
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								src/stores/ui.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					import { defineStore } from "pinia"
 | 
				
			||||||
 | 
					import { reactive } from "vue"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const useUI = defineStore("ui", () => {
 | 
				
			||||||
 | 
					  const safeArea = reactive({
 | 
				
			||||||
 | 
					    top: 0,
 | 
				
			||||||
 | 
					    bottom: 0,
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return { safeArea }
 | 
				
			||||||
 | 
					})
 | 
				
			||||||