diff --git a/source/EduCATS.Android/packages.lock.json b/source/EduCATS.Android/packages.lock.json index 880c17ba..44f898d9 100644 --- a/source/EduCATS.Android/packages.lock.json +++ b/source/EduCATS.Android/packages.lock.json @@ -139,37 +139,35 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "S44xfpWeoPOQl2YHdp1TB0iYMXF0QHvHHFHsLere9j/0VL5/sTimy7KYjNI+46GXwOjRFvdtt+vIb36UjubEaA==" + "resolved": "7.6.0", + "contentHash": "q4MZ8d0LlWKWtQfxNl9ZRZVOQ7IPEAR6CF4rFKITfuqEUOhqrbwHbqBanReI37155IKb8V/tPJqpPa3KXm9wQQ==" }, "Microsoft.IdentityModel.JsonWebTokens": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "mfEKYEyemkzkLfjxyN5/d1owLpE8JArslFNeDMlNMX75p+U9E67rg5MGzOXHhrOICfDS+OKV2ChJmPPZ9o4HIA==", + "resolved": "7.6.0", + "contentHash": "lsleZbCuh3wZ3RfKd8WJ7E52nIeQQzJsDrgHN+B3Zhzd32UTQ1V3Vjn1N9PssnSulAoEMF0aAiue7ucX+TPoQA==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "6.32.1", - "System.Text.Encoding": "4.3.0", + "Microsoft.IdentityModel.Tokens": "7.6.0", "System.Text.Encodings.Web": "4.7.2", "System.Text.Json": "4.7.2" } }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "g+VienLv1RjOfnxsDid3f6g5MTCRv/vDl3mofabc6m/uDzJpoAlXymo2kqpSAWMrGbqCQI01SvYDxHjmoo3h+Q==", + "resolved": "7.6.0", + "contentHash": "7AVJhNY4y/i96XGfaXovX8aAyYWz6HHtPEPHPpbg5JCchwVaoO08VmmpHe0L2gVagW/iHG0w4a4Xg9gxLXQ/8A==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "6.32.1" + "Microsoft.IdentityModel.Abstractions": "7.6.0" } }, "Microsoft.IdentityModel.Tokens": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "8zGvRVWoVQSYg7qQj3zUslleZ/9lwDb6cWgDkIuqr0mCtXK/dr6IDgP7KpWJ5UhkoYYfLvwBl4GYEz4xMH524A==", + "resolved": "7.6.0", + "contentHash": "xvEil42RUe4Si/TuLDvglNXpklgCWMSecPduczXPS2BAypjheUehPqKLwIy8vSdzB4K2zza3yLgmODBt+J6ZxQ==", "dependencies": { "Microsoft.CSharp": "4.5.0", - "Microsoft.IdentityModel.Logging": "6.32.1", + "Microsoft.IdentityModel.Logging": "7.6.0", "System.Security.Cryptography.Cng": "4.5.0", - "System.Text.Encoding": "4.3.0", "System.Text.Encodings.Web": "4.7.2", "System.Text.Json": "4.7.2" } @@ -189,8 +187,16 @@ }, "SkiaSharp": { "type": "Transitive", - "resolved": "2.80.2", - "contentHash": "D25rzdCwh+3L+XyXqpNa+H/yiLJbE3/R3K/XexwHyQjGdzZvSufFW3oqf3En7hhqSIsxsJ8f5NEZ0J5W5wlGBg==" + "resolved": "2.88.6", + "contentHash": "wdfeBAQrEQCbJIRgAiargzP1Uy+0grZiG4CSgBnhAgcJTsPzlifIaO73JRdwIlT3TyBoeU9jEqzwFUhl4hTYnQ==", + "dependencies": { + "SkiaSharp.NativeAssets.Android": "2.88.6" + } + }, + "SkiaSharp.NativeAssets.Android": { + "type": "Transitive", + "resolved": "2.88.6", + "contentHash": "yFtWleVp7hRhSPuyEJPlTRsiEQANTHJuREcpIFiFG9bdGmYgAS5CMJXOiO67jyUT7v7vSj3Qk34I7P5FRm1wUg==" }, "SkiaSharp.Views": { "type": "Transitive", @@ -217,11 +223,11 @@ }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "m6kuL4jfpDHuWkUNS5peyO71nRH8nE2TsTC/n0Isajze4d86xTUmEJ3J0vzYdp4X3OQ72y9KXnQGtxgu9Axd0w==", + "resolved": "7.6.0", + "contentHash": "LIuEbv/kFpuw00yI/mPu+T9NAVdH/u7Y5ChCGzYQQeCg9Pft2C7HFWuO/P+Z7c2RcySNjVk1FmuAheKjYIbOkw==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "6.32.1", - "Microsoft.IdentityModel.Tokens": "6.32.1" + "Microsoft.IdentityModel.JsonWebTokens": "7.6.0", + "Microsoft.IdentityModel.Tokens": "7.6.0" } }, "System.Numerics.Vectors": { @@ -239,11 +245,6 @@ "resolved": "4.5.0", "contentHash": "WG3r7EyjUe9CMPFSs6bty5doUqT+q9pbI80hlNzo2SkPkZ4VTuZkGWjpp77JB8+uaL4DFPRdBsAY+DX3dBK92A==" }, - "System.Text.Encoding": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==" - }, "System.Text.Encodings.Web": { "type": "Transitive", "resolved": "4.7.2", @@ -1009,7 +1010,8 @@ "Microcharts.Forms": "[0.9.5.9, )", "MonkeyCache.FileStore": "[1.6.3, )", "Nyxbull.Plugins.CrossLocalization": "[1.3.1, )", - "System.IdentityModel.Tokens.Jwt": "[6.32.1, )", + "SkiaSharp": "[2.88.6, )", + "System.IdentityModel.Tokens.Jwt": "[7.6.0, )", "Xamarin.Essentials": "[1.8.0, )", "Xamarin.FFImageLoading": "[2.4.11.982, )", "Xamarin.FFImageLoading.Forms": "[2.4.11.982, )", diff --git a/source/EduCATS.UnitTests/packages.lock.json b/source/EduCATS.UnitTests/packages.lock.json index cf76b79b..54061b64 100644 --- a/source/EduCATS.UnitTests/packages.lock.json +++ b/source/EduCATS.UnitTests/packages.lock.json @@ -86,43 +86,33 @@ "resolved": "17.7.1", "contentHash": "NmGwM2ZJy4CAMdJYIp53opUjnXsMbzASX5oQzgxORicJsgz5Lp50fnRI8OmQ/kYNg6dHfr3IjuUoXbsotDX+KA==" }, - "Microsoft.CSharp": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "kaj6Wb4qoMuH3HySFJhxwQfe8R/sJsNJnANrvv8WdFPMoNbKY5htfNscv+LHCu5ipz+49m2e+WQXpLXr9XYemQ==" - }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "S44xfpWeoPOQl2YHdp1TB0iYMXF0QHvHHFHsLere9j/0VL5/sTimy7KYjNI+46GXwOjRFvdtt+vIb36UjubEaA==" + "resolved": "7.6.0", + "contentHash": "q4MZ8d0LlWKWtQfxNl9ZRZVOQ7IPEAR6CF4rFKITfuqEUOhqrbwHbqBanReI37155IKb8V/tPJqpPa3KXm9wQQ==" }, "Microsoft.IdentityModel.JsonWebTokens": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "mfEKYEyemkzkLfjxyN5/d1owLpE8JArslFNeDMlNMX75p+U9E67rg5MGzOXHhrOICfDS+OKV2ChJmPPZ9o4HIA==", + "resolved": "7.6.0", + "contentHash": "lsleZbCuh3wZ3RfKd8WJ7E52nIeQQzJsDrgHN+B3Zhzd32UTQ1V3Vjn1N9PssnSulAoEMF0aAiue7ucX+TPoQA==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "6.32.1", - "System.Text.Encoding": "4.3.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2" + "Microsoft.IdentityModel.Tokens": "7.6.0" } }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "g+VienLv1RjOfnxsDid3f6g5MTCRv/vDl3mofabc6m/uDzJpoAlXymo2kqpSAWMrGbqCQI01SvYDxHjmoo3h+Q==", + "resolved": "7.6.0", + "contentHash": "7AVJhNY4y/i96XGfaXovX8aAyYWz6HHtPEPHPpbg5JCchwVaoO08VmmpHe0L2gVagW/iHG0w4a4Xg9gxLXQ/8A==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "6.32.1" + "Microsoft.IdentityModel.Abstractions": "7.6.0" } }, "Microsoft.IdentityModel.Tokens": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "8zGvRVWoVQSYg7qQj3zUslleZ/9lwDb6cWgDkIuqr0mCtXK/dr6IDgP7KpWJ5UhkoYYfLvwBl4GYEz4xMH524A==", + "resolved": "7.6.0", + "contentHash": "xvEil42RUe4Si/TuLDvglNXpklgCWMSecPduczXPS2BAypjheUehPqKLwIy8vSdzB4K2zza3yLgmODBt+J6ZxQ==", "dependencies": { - "Microsoft.CSharp": "4.5.0", - "Microsoft.IdentityModel.Logging": "6.32.1", - "System.Security.Cryptography.Cng": "4.5.0" + "Microsoft.IdentityModel.Logging": "7.6.0" } }, "Microsoft.NETCore.Platforms": { @@ -130,11 +120,6 @@ "resolved": "1.1.0", "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" }, - "Microsoft.NETCore.Targets": { - "type": "Transitive", - "resolved": "1.1.0", - "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==" - }, "Microsoft.TestPlatform.ObjectModel": { "type": "Transitive", "resolved": "17.7.1", @@ -198,12 +183,23 @@ }, "SkiaSharp": { "type": "Transitive", - "resolved": "2.80.2", - "contentHash": "D25rzdCwh+3L+XyXqpNa+H/yiLJbE3/R3K/XexwHyQjGdzZvSufFW3oqf3En7hhqSIsxsJ8f5NEZ0J5W5wlGBg==", + "resolved": "2.88.6", + "contentHash": "wdfeBAQrEQCbJIRgAiargzP1Uy+0grZiG4CSgBnhAgcJTsPzlifIaO73JRdwIlT3TyBoeU9jEqzwFUhl4hTYnQ==", "dependencies": { - "System.Memory": "4.5.3" + "SkiaSharp.NativeAssets.Win32": "2.88.6", + "SkiaSharp.NativeAssets.macOS": "2.88.6" } }, + "SkiaSharp.NativeAssets.macOS": { + "type": "Transitive", + "resolved": "2.88.6", + "contentHash": "Sko9LFxRXSjb3OGh5/RxrVRXxYo48tr5NKuuSy6jB85GrYt8WRqVY1iLOLwtjPiVAt4cp+pyD4i30azanS64dw==" + }, + "SkiaSharp.NativeAssets.Win32": { + "type": "Transitive", + "resolved": "2.88.6", + "contentHash": "7TzFO0u/g2MpQsTty4fyCDdMcfcWI+aLswwfnYXr3gtNS6VLKdMXPMeKpJa3pJSLnUBN6wD0JjuCe8OoLBQ6cQ==" + }, "SkiaSharp.Views.Forms": { "type": "Transitive", "resolved": "2.80.2", @@ -220,18 +216,13 @@ }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "m6kuL4jfpDHuWkUNS5peyO71nRH8nE2TsTC/n0Isajze4d86xTUmEJ3J0vzYdp4X3OQ72y9KXnQGtxgu9Axd0w==", + "resolved": "7.6.0", + "contentHash": "LIuEbv/kFpuw00yI/mPu+T9NAVdH/u7Y5ChCGzYQQeCg9Pft2C7HFWuO/P+Z7c2RcySNjVk1FmuAheKjYIbOkw==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "6.32.1", - "Microsoft.IdentityModel.Tokens": "6.32.1" + "Microsoft.IdentityModel.JsonWebTokens": "7.6.0", + "Microsoft.IdentityModel.Tokens": "7.6.0" } }, - "System.Memory": { - "type": "Transitive", - "resolved": "4.5.3", - "contentHash": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==" - }, "System.Numerics.Vectors": { "type": "Transitive", "resolved": "4.5.0", @@ -242,40 +233,6 @@ "resolved": "1.6.0", "contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==" }, - "System.Runtime": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "System.Security.Cryptography.Cng": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "WG3r7EyjUe9CMPFSs6bty5doUqT+q9pbI80hlNzo2SkPkZ4VTuZkGWjpp77JB8+uaL4DFPRdBsAY+DX3dBK92A==" - }, - "System.Text.Encoding": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "4.7.2", - "contentHash": "iTUgB/WtrZ1sWZs84F2hwyQhiRH6QNjQv2DkwrH+WP6RoFga2Q1m3f9/Q7FG8cck8AdHitQkmkXSY8qylcDmuA==" - }, - "System.Text.Json": { - "type": "Transitive", - "resolved": "4.7.2", - "contentHash": "TcMd95wcrubm9nHvJEQs70rC0H/8omiSGGpU4FQ/ZA1URIqD4pjmFJh2Mfv1yH1eHgJDWTi2hMDXwTET+zOOyg==" - }, "System.ValueTuple": { "type": "Transitive", "resolved": "4.5.0", @@ -325,7 +282,8 @@ "Microcharts.Forms": "[0.9.5.9, )", "MonkeyCache.FileStore": "[1.6.3, )", "Nyxbull.Plugins.CrossLocalization": "[1.3.1, )", - "System.IdentityModel.Tokens.Jwt": "[6.32.1, )", + "SkiaSharp": "[2.88.6, )", + "System.IdentityModel.Tokens.Jwt": "[7.6.0, )", "Xamarin.Essentials": "[1.8.0, )", "Xamarin.FFImageLoading": "[2.4.11.982, )", "Xamarin.FFImageLoading.Forms": "[2.4.11.982, )", diff --git a/source/EduCATS.iOS/packages.lock.json b/source/EduCATS.iOS/packages.lock.json index 784c10ce..a3c3223c 100644 --- a/source/EduCATS.iOS/packages.lock.json +++ b/source/EduCATS.iOS/packages.lock.json @@ -125,37 +125,35 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "S44xfpWeoPOQl2YHdp1TB0iYMXF0QHvHHFHsLere9j/0VL5/sTimy7KYjNI+46GXwOjRFvdtt+vIb36UjubEaA==" + "resolved": "7.6.0", + "contentHash": "q4MZ8d0LlWKWtQfxNl9ZRZVOQ7IPEAR6CF4rFKITfuqEUOhqrbwHbqBanReI37155IKb8V/tPJqpPa3KXm9wQQ==" }, "Microsoft.IdentityModel.JsonWebTokens": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "mfEKYEyemkzkLfjxyN5/d1owLpE8JArslFNeDMlNMX75p+U9E67rg5MGzOXHhrOICfDS+OKV2ChJmPPZ9o4HIA==", + "resolved": "7.6.0", + "contentHash": "lsleZbCuh3wZ3RfKd8WJ7E52nIeQQzJsDrgHN+B3Zhzd32UTQ1V3Vjn1N9PssnSulAoEMF0aAiue7ucX+TPoQA==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "6.32.1", - "System.Text.Encoding": "4.3.0", + "Microsoft.IdentityModel.Tokens": "7.6.0", "System.Text.Encodings.Web": "4.7.2", "System.Text.Json": "4.7.2" } }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "g+VienLv1RjOfnxsDid3f6g5MTCRv/vDl3mofabc6m/uDzJpoAlXymo2kqpSAWMrGbqCQI01SvYDxHjmoo3h+Q==", + "resolved": "7.6.0", + "contentHash": "7AVJhNY4y/i96XGfaXovX8aAyYWz6HHtPEPHPpbg5JCchwVaoO08VmmpHe0L2gVagW/iHG0w4a4Xg9gxLXQ/8A==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "6.32.1" + "Microsoft.IdentityModel.Abstractions": "7.6.0" } }, "Microsoft.IdentityModel.Tokens": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "8zGvRVWoVQSYg7qQj3zUslleZ/9lwDb6cWgDkIuqr0mCtXK/dr6IDgP7KpWJ5UhkoYYfLvwBl4GYEz4xMH524A==", + "resolved": "7.6.0", + "contentHash": "xvEil42RUe4Si/TuLDvglNXpklgCWMSecPduczXPS2BAypjheUehPqKLwIy8vSdzB4K2zza3yLgmODBt+J6ZxQ==", "dependencies": { "Microsoft.CSharp": "4.5.0", - "Microsoft.IdentityModel.Logging": "6.32.1", + "Microsoft.IdentityModel.Logging": "7.6.0", "System.Security.Cryptography.Cng": "4.5.0", - "System.Text.Encoding": "4.3.0", "System.Text.Encodings.Web": "4.7.2", "System.Text.Json": "4.7.2" } @@ -175,8 +173,16 @@ }, "SkiaSharp": { "type": "Transitive", - "resolved": "2.80.2", - "contentHash": "D25rzdCwh+3L+XyXqpNa+H/yiLJbE3/R3K/XexwHyQjGdzZvSufFW3oqf3En7hhqSIsxsJ8f5NEZ0J5W5wlGBg==" + "resolved": "2.88.6", + "contentHash": "wdfeBAQrEQCbJIRgAiargzP1Uy+0grZiG4CSgBnhAgcJTsPzlifIaO73JRdwIlT3TyBoeU9jEqzwFUhl4hTYnQ==", + "dependencies": { + "SkiaSharp.NativeAssets.iOS": "2.88.6" + } + }, + "SkiaSharp.NativeAssets.iOS": { + "type": "Transitive", + "resolved": "2.88.6", + "contentHash": "j+Nv2cKDb6YZDebtIWjaypG7rngEw7xLvB0WlCoIpUShop0jPLutoqiPx2r4FFt72egzVhUrUn/rlyL7EeYpTA==" }, "SkiaSharp.Views": { "type": "Transitive", @@ -203,11 +209,11 @@ }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "m6kuL4jfpDHuWkUNS5peyO71nRH8nE2TsTC/n0Isajze4d86xTUmEJ3J0vzYdp4X3OQ72y9KXnQGtxgu9Axd0w==", + "resolved": "7.6.0", + "contentHash": "LIuEbv/kFpuw00yI/mPu+T9NAVdH/u7Y5ChCGzYQQeCg9Pft2C7HFWuO/P+Z7c2RcySNjVk1FmuAheKjYIbOkw==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "6.32.1", - "Microsoft.IdentityModel.Tokens": "6.32.1" + "Microsoft.IdentityModel.JsonWebTokens": "7.6.0", + "Microsoft.IdentityModel.Tokens": "7.6.0" } }, "System.Numerics.Vectors": { @@ -225,11 +231,6 @@ "resolved": "4.5.0", "contentHash": "WG3r7EyjUe9CMPFSs6bty5doUqT+q9pbI80hlNzo2SkPkZ4VTuZkGWjpp77JB8+uaL4DFPRdBsAY+DX3dBK92A==" }, - "System.Text.Encoding": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==" - }, "System.Text.Encodings.Web": { "type": "Transitive", "resolved": "4.7.2", @@ -270,7 +271,8 @@ "Microcharts.Forms": "[0.9.5.9, )", "MonkeyCache.FileStore": "[1.6.3, )", "Nyxbull.Plugins.CrossLocalization": "[1.3.1, )", - "System.IdentityModel.Tokens.Jwt": "[6.32.1, )", + "SkiaSharp": "[2.88.6, )", + "System.IdentityModel.Tokens.Jwt": "[7.6.0, )", "Xamarin.Essentials": "[1.8.0, )", "Xamarin.FFImageLoading": "[2.4.11.982, )", "Xamarin.FFImageLoading.Forms": "[2.4.11.982, )", @@ -280,10 +282,10 @@ } }, "Xamarin.iOS,Version=v1.0/win": { - "SkiaSharp": { + "SkiaSharp.NativeAssets.iOS": { "type": "Transitive", - "resolved": "2.80.2", - "contentHash": "D25rzdCwh+3L+XyXqpNa+H/yiLJbE3/R3K/XexwHyQjGdzZvSufFW3oqf3En7hhqSIsxsJ8f5NEZ0J5W5wlGBg==" + "resolved": "2.88.6", + "contentHash": "j+Nv2cKDb6YZDebtIWjaypG7rngEw7xLvB0WlCoIpUShop0jPLutoqiPx2r4FFt72egzVhUrUn/rlyL7EeYpTA==" }, "System.Security.Cryptography.Cng": { "type": "Transitive", @@ -292,10 +294,10 @@ } }, "Xamarin.iOS,Version=v1.0/win-x64": { - "SkiaSharp": { + "SkiaSharp.NativeAssets.iOS": { "type": "Transitive", - "resolved": "2.80.2", - "contentHash": "D25rzdCwh+3L+XyXqpNa+H/yiLJbE3/R3K/XexwHyQjGdzZvSufFW3oqf3En7hhqSIsxsJ8f5NEZ0J5W5wlGBg==" + "resolved": "2.88.6", + "contentHash": "j+Nv2cKDb6YZDebtIWjaypG7rngEw7xLvB0WlCoIpUShop0jPLutoqiPx2r4FFt72egzVhUrUn/rlyL7EeYpTA==" }, "System.Security.Cryptography.Cng": { "type": "Transitive", @@ -304,10 +306,10 @@ } }, "Xamarin.iOS,Version=v1.0/win-x86": { - "SkiaSharp": { + "SkiaSharp.NativeAssets.iOS": { "type": "Transitive", - "resolved": "2.80.2", - "contentHash": "D25rzdCwh+3L+XyXqpNa+H/yiLJbE3/R3K/XexwHyQjGdzZvSufFW3oqf3En7hhqSIsxsJ8f5NEZ0J5W5wlGBg==" + "resolved": "2.88.6", + "contentHash": "j+Nv2cKDb6YZDebtIWjaypG7rngEw7xLvB0WlCoIpUShop0jPLutoqiPx2r4FFt72egzVhUrUn/rlyL7EeYpTA==" }, "System.Security.Cryptography.Cng": { "type": "Transitive", diff --git a/source/EduCATS/EduCATS.csproj b/source/EduCATS/EduCATS.csproj index 40d99c9f..fdd124a8 100644 --- a/source/EduCATS/EduCATS.csproj +++ b/source/EduCATS/EduCATS.csproj @@ -21,7 +21,8 @@ - + + @@ -118,7 +119,6 @@ - @@ -146,6 +146,9 @@ + + + diff --git a/source/EduCATS/Helpers/Forms/Pages/AppPages.cs b/source/EduCATS/Helpers/Forms/Pages/AppPages.cs index 1ad3981b..460b1a03 100644 --- a/source/EduCATS/Helpers/Forms/Pages/AppPages.cs +++ b/source/EduCATS/Helpers/Forms/Pages/AppPages.cs @@ -18,6 +18,7 @@ using EduCATS.Pages.SaveLabsAndPracticeMarks.Views; using EduCATS.Pages.SaveMarks.Views; using EduCATS.Pages.Settings.About.Views; +using EduCATS.Pages.Settings.Profile.Views; using EduCATS.Pages.Settings.Base.Views; using EduCATS.Pages.Settings.Fonts.Views; using EduCATS.Pages.Settings.Language.Views; @@ -44,7 +45,8 @@ public class AppPages : IPages /// /// Property for getting and setting . /// - NavigationPage mainPage { + NavigationPage mainPage + { get => Application.Current.MainPage as NavigationPage; set => Application.Current.MainPage = value; } @@ -57,9 +59,12 @@ public class AppPages : IPages /// Task. public async Task ClosePage(bool modal, bool animated = true) { - if (modal) { + if (modal) + { await mainPage.Navigation.PopModalAsync(animated); - } else { + } + else + { await mainPage.Navigation.PopAsync(animated); } } @@ -82,7 +87,7 @@ public async Task ClosePage(bool modal, bool animated = true) /// /// public async Task OpenFindGroup(string title) => - await pushPage(new FindGroupPageView(),title); + await pushPage(new FindGroupPageView(), title); public async Task OpenParentalStats(GroupInfo group, string title) => await pushPage(new ParentalStatsPageView(group), title); @@ -229,6 +234,13 @@ public async Task ClosePage(bool modal, bool animated = true) public async Task OpenSettingsAbout(string title) => await pushPage(new AboutPageView(), title); + /// + /// Change Application's main page without animation. + /// + /// Page to set. + public async Task OpenProfileAbout(string title) => + await pushPage(new ProfilePageView(), title); + /// /// Change Application's main page without animation. /// @@ -245,10 +257,13 @@ public async Task ClosePage(bool modal, bool animated = true) /// Task. async Task pushPage(Page newPage, string title = null, bool isModal = false) { - if (isModal) { + if (isModal) + { await mainPage.Navigation.PushModalAsync( getNavigationPage(newPage, title)); - } else { + } + else + { await mainPage.Navigation.PushAsync( getNavigationPage(newPage, title)); } @@ -260,7 +275,8 @@ async Task pushPage(Page newPage, string title = null, bool isModal = false) /// Page to convert. /// Page title. /// Task. - NavigationPage getNavigationPage(Page page, string title = "") => new NavigationPage(page) { + NavigationPage getNavigationPage(Page page, string title = "") => new NavigationPage(page) + { Title = title, BarBackgroundColor = Color.FromHex(Theme.Current.AppNavigationBarBackgroundColor), BarTextColor = Color.FromHex(Theme.Current.BaseAppColor) @@ -272,7 +288,7 @@ async Task pushPage(Page newPage, string title = null, bool isModal = false) public async Task OpenForgotPassword(string title) => await pushPage(new ForgotPasswordPageView(), title); - public async Task OpenAddMarks(string title, GroupItemModel groupId, int subjectId,string groupName) => + public async Task OpenAddMarks(string title, GroupItemModel groupId, int subjectId, string groupName) => await pushPage(new SaveMarksPageView(subjectId, groupId.GroupId, title, groupName), title); public async Task OpenAddMarksPracticeAndLabs(string title, GroupItemModel groupId, int subject, string groupName) => diff --git a/source/EduCATS/Helpers/Forms/Pages/Interfaces/IPages.cs b/source/EduCATS/Helpers/Forms/Pages/Interfaces/IPages.cs index e613c9d8..033322bc 100644 --- a/source/EduCATS/Helpers/Forms/Pages/Interfaces/IPages.cs +++ b/source/EduCATS/Helpers/Forms/Pages/Interfaces/IPages.cs @@ -35,8 +35,8 @@ public interface IPages /// /// Title. /// - public Task OpenFindGroup(string title); - + public Task OpenFindGroup(string title); + /// /// Open parental control statistics /// @@ -180,5 +180,12 @@ public interface IPages /// Title. /// Task. Task OpenSettingsAbout(string title); + + /// + /// Open Settings About application page. + /// + /// Title. + /// Task. + Task OpenProfileAbout(string title); } } diff --git a/source/EduCATS/Localization/be.json b/source/EduCATS/Localization/be.json index 5ab66ed7..1681d9c0 100644 --- a/source/EduCATS/Localization/be.json +++ b/source/EduCATS/Localization/be.json @@ -50,7 +50,7 @@ "main_statistics": "Статыстыка", "main_settings": "Налады", - "today_subjects": "Прадметы", + "today_subjects": "Расклад", "today_news": "Навіны", "today_news_load_error": "Здарылася памылка падчас атрымання спісу навін. Калі ласка абнавіце старонку альбо звярніцеся ў службу падтрымкі.", "today_subjects_error": "Здарылася памылка падчас атрымання спісу прадметаў. Калі ласка абнавіце старонку альбо звярніцеся ў службу падтрымкі.", @@ -86,6 +86,11 @@ "learning_card_files": "Файлы", "learning_card_adaptive": "Адаптыўнае навучанне", + "update_title": "Абнаўленне", + "update_message": "Выйшла абнаўленне ", + "update_link_button": "Абнавіць", + "update_cancel_button": "Пазней", + "testing_get_tests_error": "Здарылася памылка падчас атрымання тэстаў. Калі ласка абнавіце старонку альбо звярніцеся ў службу падтрымкі.", "testing_knowledge_control": "Тэсты для кантролю ведаў", "testing_self_study": "Тэсты для самакантролю", @@ -126,6 +131,7 @@ "settings_font": "Тэкст & Шрыфт", "settings_delete": "Выдаліць акаўнт", "settings_about": "Пра дадатак", + "settings_about_profile": "Аб акаўнце", "settings_logout": "Выйсці", "settings_logout_message": "Вы насамрэч жадаеце выйсці?", @@ -173,6 +179,11 @@ "name": "Імя", "surname": "Прозвішча", "patronymic": "Імя па бацьку", + "login": "Лагін", + "email": "Пошта", + "phone": "Тэлефон", + "accountinfo": "Skype, Viber, Telegram і др.", + "about": "Пра сябе", "confirm_password": "Пацверджанне пароля", "select_secret_question": "Серкретный пытанне", "choose_group": "Группа", diff --git a/source/EduCATS/Localization/de.json b/source/EduCATS/Localization/de.json index 87e7db75..13d94143 100644 --- a/source/EduCATS/Localization/de.json +++ b/source/EduCATS/Localization/de.json @@ -50,7 +50,7 @@ "main_statistics": "Statistik", "main_settings": "Einstellungen", - "today_subjects": "Studienfächer", + "today_subjects": "Zeitplan", "today_news": "Nachrichten", "today_news_load_error": "Fehler beim abrufen der Nachrichtenliste. Bitte aktualisieren Sie die Seite oder Kontaktieren Sie den Support.", "today_subjects_error": "Fehler beim abrufen der Artikelliste. Bitte aktualisieren Sie die Seite oder Kontaktieren Sie den Support.", @@ -88,6 +88,11 @@ "learning_card_files": "Dateien", "learning_card_adaptive": "Adaptives lernen", + "update_title": "Aktualisieren", + "update_message": "Update veröffentlicht ", + "update_link_button": "Aktualisieren", + "update_cancel_button": "Später", + "testing_get_tests_error": "Fehler beim abrufen von Tests. Bitte aktualisieren Sie die Seite oder Kontaktieren Sie den Support.", "testing_knowledge_control": "Tests zur Wissenskontrolle", "testing_self_study": "Tests zur Selbstkontrolle", @@ -128,6 +133,7 @@ "settings_font": "Text & Schriftart", "settings_delete": "Konto löschen", "settings_about": "Über die App ", + "settings_about_profile": "Über das Konto", "settings_logout": "Abmelden", "settings_logout_message": "Möchten Sie wirklich abmelden?", @@ -175,6 +181,11 @@ "name": "Name", "surname": "Vorname", "patronymic": "Patronym", + "login": "Anmeldung", + "email": "Post", + "phone": "Telefon", + "accountinfo": "Skype, Viber, Telegram und andere", + "about": "Über mich", "confirm_password": "Confirm password", "select_secret_question": "Spezifische Frage", "select_group": "Group", diff --git a/source/EduCATS/Localization/en.json b/source/EduCATS/Localization/en.json index ca7d6fa0..480db272 100644 --- a/source/EduCATS/Localization/en.json +++ b/source/EduCATS/Localization/en.json @@ -50,7 +50,7 @@ "main_statistics": "Statistics", "main_settings": "Settings", - "today_subjects": "Subjects", + "today_subjects": "Schedule", "today_news": "News", "today_news_load_error": "Error occurred during retrieving news. Please try to refresh page or contact support.", "today_subjects_error": "Error occurred during retrieving subjects. Please try to refresh page or contact support.", @@ -88,6 +88,11 @@ "learning_card_files": "Files", "learning_card_adaptive": "Adaptive learning", + "update_title": "Update", + "update_message": "Update released ", + "update_link_button": "Update", + "update_cancel_button": "Later", + "testing_get_tests_error": "Error occurred during retrieving tests. Please try to refresh page or contact support.", "testing_knowledge_control": "Tests for knowledge control", "testing_self_study": "Tests for self-study", @@ -128,6 +133,7 @@ "settings_font": "Text & Font", "settings_delete": "Delete account", "settings_about": "About application", + "settings_about_profile": "About the account", "settings_logout": "Logout", "settings_logout_message": "Are you sure you want to logout?", @@ -175,6 +181,11 @@ "name": "Name", "surname": "Last name", "patronymic": "Patronymic", + "login": "Login", + "email": "Email", + "phone": "Telephone", + "accountinfo": "Skype, Viber, Telegram and other", + "about": "About", "confirm_password": "Confirm password", "select_secret_question": "Specific question", "choose_group": "Group", diff --git a/source/EduCATS/Localization/lt.json b/source/EduCATS/Localization/lt.json index 3fc631e9..f5cc4e4c 100644 --- a/source/EduCATS/Localization/lt.json +++ b/source/EduCATS/Localization/lt.json @@ -51,7 +51,7 @@ "main_statistics": "Statistika", "main_settings": "Nustatymai", - "today_subjects": "Dalykai", + "today_subjects": "Tvarkaraštį", "today_news": "Naujienos", "today_news_load_error": "Gaunant naujienų sąrašą įvyko klaida. Atnaujinkite puslapį arba susisiekite su palaikymo tarnyba.", "today_subjects_error": "Gaunant elementų sąrašą įvyko klaida. Atnaujinkite puslapį arba susisiekite su palaikymo tarnyba.", @@ -89,6 +89,11 @@ "learning_card_files": "Failai", "learning_card_adaptive": "Adaptyvusis mokymasis", + "update_title": "Atnaujinti", + "update_message": "Atnaujinimas išleistas ", + "update_link_button": "Atnaujinti", + "update_cancel_button": "Vėliau", + "testing_get_tests_error": "Gaunant testus įvyko klaida. Atnaujinkite puslapį arba susisiekite su palaikymo tarnyba.", "testing_knowledge_control": "Žinių kontrolės testai", "testing_self_study": "Savikontrolės testai", @@ -129,6 +134,7 @@ "settings_font": "Tekstas ir šriftas", "settings_delete": "Eliminare l'account", "settings_about": "Apie programą", + "settings_about_profile": "Apie paskyrą", "settings_logout": "Atsijungti", "settings_logout_message": "Ar tikrai norite atsijungti ?", @@ -176,6 +182,11 @@ "name": "Vardas", "surname": "Pavardė", "patronymic": "Tėvavardis", + "login": "Prisijungti", + "email": "Paštas", + "phone": "Telefonas", + "accountinfo": "Skype, Viber, Telegram ir kita", + "about": "Apie mane", "confirm_password": "Patvirtinti slaptažodį", "select_secret_question": "Konkretus klausimas", "select_group": "Grupė", diff --git a/source/EduCATS/Localization/pl.json b/source/EduCATS/Localization/pl.json index e36752ee..31f5e638 100644 --- a/source/EduCATS/Localization/pl.json +++ b/source/EduCATS/Localization/pl.json @@ -49,7 +49,7 @@ "main_statistics": "Statystyk", "main_settings": "Konfiguracja", - "today_subjects": "Dyscypliny", + "today_subjects": "harmonogram", "today_news": "Wiadomości", "today_news_load_error": "Wystąpił błąd podczas pobierania listy wiadomości. Proszę odświeżyć stronę lub skontaktować się z obsługą klienta.", "today_subjects_error": "Wystąpił błąd podczas pobierania listy dyscyplin. Proszę odświeżyć stronę lub skontaktować się z obsługą klienta.", @@ -87,6 +87,11 @@ "learning_card_files": "Dokumenty", "learning_card_adaptive": "Uczenie adaptacyjne", + "update_title": "Aktualizacja", + "update_message": "Aktualizacja wydana ", + "update_link_button": "Aktualizacja", + "update_cancel_button": "Później", + "testing_get_tests_error": "Wystąpił błąd podczas pobierania testów. Proszę odświeżyć stronę lub skontaktować się z obsługą klienta.", "testing_knowledge_control": "Testy dla kontroli wiedzy", "testing_self_study": "Testy dla samokontroli", @@ -127,6 +132,7 @@ "settings_font": "Tekst & Czcionka", "settings_delete": "Usuń konto", "settings_about": "Informacje o aplikacji", + "settings_about_profile": "O koncie", "settings_logout": "Wyjść", "settings_logout_message": "Czy na pewno chcesz wyjść?", @@ -174,6 +180,11 @@ "name": "Nazwa", "surname": "Nazwisko", "patronymic": "Patronimiczny", + "login": "Zaloguj sie", + "email": "Poczta", + "phone": "Telefon", + "accountinfo": "Skype, Viber, Telegram i inne.", + "about": "O mnie", "confirm_password": "Potwierdź hasło", "select_secret_question": "Konkretne pytanie", "choose_group": "Grupa", diff --git a/source/EduCATS/Localization/ru.json b/source/EduCATS/Localization/ru.json index 7be6d170..f12bab38 100644 --- a/source/EduCATS/Localization/ru.json +++ b/source/EduCATS/Localization/ru.json @@ -53,11 +53,13 @@ "main_settings": "Настройки", - "today_subjects": "Предметы", + "today_subjects": "Расписание", "today_news": "Новости", "today_news_load_error": "Произошла ошибка во время получения списка новостей. Пожалуйста, обновите страницу или обратитесь в службу поддержки.", "today_subjects_error": "Произошла ошибка во время получения списка предметов. Пожалуйста, обновите страницу или обратитесь в службу поддержки.", "today_calendar_error": "Произошла ошибка во время получения списка предметов в календаре. Пожалуйста, обновите страницу или обратитесь в службу поддержки.", + "today_account_error": "Произошла ошибка во время получения информацию об аккаунте. Пожалуйста, обновите страницу или обратитесь в службу поддержки.", + "news_details_title": "Новости", @@ -91,6 +93,11 @@ "learning_card_files": "Файлы", "learning_card_adaptive": "Адаптивное обучение", + "update_title": "Обновление", + "update_message": "Вышло обновление ", + "update_link_button": "Обновить", + "update_cancel_button": "Позже", + "testing_get_tests_error": "Произошла ошибка во время получения тестов. Пожалуйста, обновите страницу или обратитесь в службу поддержки.", "testing_knowledge_control": "Тесты для контроля знаний", "testing_self_study": "Тесты для самоконтроля", @@ -131,6 +138,7 @@ "settings_font": "Текст & Шрифт", "settings_delete": "Удалить аккаунт", "settings_about": "О приложении", + "settings_about_profile": "Об аккаунте", "settings_logout": "Выйти", "settings_logout_message": "Вы действительно хотите выйти?", @@ -178,6 +186,11 @@ "name": "Имя", "surname": "Фамилия", "patronymic": "Отчество", + "login": "Логин", + "email": "Почта", + "phone": "Телефон", + "accountinfo": "Skype, Viber, Telegram и др.", + "about": "О себе", "confirm_password": "Подтверждение пароля", "select_secret_question": "Секретный вопрос", "choose_group": "Группа", diff --git a/source/EduCATS/Pages/Settings/About/ViewModels/AboutPageViewModel.cs b/source/EduCATS/Pages/Settings/About/ViewModels/AboutPageViewModel.cs index 587b5ad1..ebb49683 100644 --- a/source/EduCATS/Pages/Settings/About/ViewModels/AboutPageViewModel.cs +++ b/source/EduCATS/Pages/Settings/About/ViewModels/AboutPageViewModel.cs @@ -15,54 +15,67 @@ public class AboutPageViewModel : ViewModel public AboutPageViewModel(IPlatformServices services) { - try { + try + { _services = services; Build = _services.Device.GetBuild(); Version = _services.Device.GetVersion(); - } catch (Exception ex) { + } + catch (Exception ex) + { AppLogs.Log(ex, nameof(AboutPageViewModel)); } } string _version; - public string Version { + public string Version + { get { return _version; } set { SetProperty(ref _version, value); } } string _build; - public string Build { + public string Build + { get { return _build; } set { SetProperty(ref _build, value); } } Command _releaseNotesCommand; - public Command ReleaseNotesCommand { - get { + public Command ReleaseNotesCommand + { + get + { return _releaseNotesCommand ?? ( _releaseNotesCommand = new Command(async () => await openReleaseNotes())); } } Command _sendLogsCommand; - public Command SendLogsCommand { - get { + public Command SendLogsCommand + { + get + { return _sendLogsCommand ?? ( _sendLogsCommand = new Command(async () => await sendLogs())); } } Command _openSourceCommand; - public Command OpenSourceCommand { - get { + public Command OpenSourceCommand + { + get + { return _openSourceCommand ?? ( _openSourceCommand = new Command(async () => await openSourceSite())); } } Command _openWebSiteCommand; - public Command OpenWebSiteCommand { - get { + public Command OpenWebSiteCommand + { + get + { return _openWebSiteCommand ?? ( _openWebSiteCommand = new Command(async () => await openWebSite())); } @@ -70,34 +83,44 @@ public AboutPageViewModel(IPlatformServices services) protected async Task openReleaseNotes() { - try { + try + { await _services.Device.OpenUri(GlobalConsts.ReleaseNotesLink); - } catch (Exception ex) { + } + catch (Exception ex) + { AppLogs.Log(ex); } } protected async Task openSourceSite() { - try { + try + { await _services.Device.OpenUri(GlobalConsts.GitHubLink); - } catch (Exception ex) { + } + catch (Exception ex) + { AppLogs.Log(ex); } } protected async Task openWebSite() { - try { + try + { await _services.Device.OpenUri(Servers.Current); - } catch (Exception ex) { + } + catch (Exception ex) + { AppLogs.Log(ex); } } protected async Task sendLogs() { - try { + try + { var platform = _services.Device.GetRuntimePlatform(); var logsFilePath = AppLogs.LogsFilePath; @@ -107,11 +130,14 @@ protected async Task sendLogs() $"Sent from {platform}, app version: {Version} ({Build})", logsFilePath); - if (!result) { + if (!result) + { _services.Dialogs.ShowError( CrossLocalization.Translate("settings_about_send_logs_not_supported")); } - } catch (Exception ex) { + } + catch (Exception ex) + { AppLogs.Log(ex); _services.Dialogs.ShowError( CrossLocalization.Translate("settings_about_send_logs_error")); diff --git a/source/EduCATS/Pages/Settings/About/Views/AboutPageView.cs b/source/EduCATS/Pages/Settings/About/Views/AboutPageView.cs index 8fe88cf4..9ef6ffa6 100644 --- a/source/EduCATS/Pages/Settings/About/Views/AboutPageView.cs +++ b/source/EduCATS/Pages/Settings/About/Views/AboutPageView.cs @@ -1,10 +1,12 @@ using EduCATS.Constants; +using EduCATS.Data.Models; using EduCATS.Helpers.Forms; using EduCATS.Helpers.Forms.Styles; using EduCATS.Pages.Settings.About.ViewModels; using EduCATS.Themes; using FFImageLoading.Forms; using Nyxbull.Plugins.CrossLocalization; +using System.Collections.Generic; using Xamarin.Forms; namespace EduCATS.Pages.Settings.About.Views @@ -13,7 +15,6 @@ public class AboutPageView : ContentPage { static Thickness _padding = new Thickness(20); static Thickness _buttonsPadding = new Thickness(0, 0, 0, 10); - const double _spacing = 20; const double _buttonHeight = 50; @@ -28,7 +29,8 @@ public AboutPageView() void createViews() { - Content = new StackLayout { + Content = new StackLayout + { Spacing = _spacing, Padding = _buttonsPadding, Children = { @@ -56,7 +58,8 @@ StackLayout createBodyLayout() CrossLocalization.Translate("settings_about_open_web_version"), "OpenWebSiteCommand"); - return new StackLayout { + return new StackLayout + { VerticalOptions = LayoutOptions.FillAndExpand, Children = { releaseNotesButton, @@ -73,7 +76,8 @@ StackLayout createHeader() var logo = createLogo(); var rightLayout = createRightLayout(); - return new StackLayout { + return new StackLayout + { Spacing = _spacing, Orientation = StackOrientation.Horizontal, Children = { logo, rightLayout } @@ -82,7 +86,8 @@ StackLayout createHeader() CachedImage createLogo() { - return new CachedImage { + return new CachedImage + { HeightRequest = 100, VerticalOptions = LayoutOptions.StartAndExpand, Source = Theme.Current.BaseLogoImage @@ -101,7 +106,8 @@ StackLayout createRightLayout() $"{CrossLocalization.Translate("settings_about_app_build")}: ", "Build"); - return new StackLayout { + return new StackLayout + { VerticalOptions = LayoutOptions.StartAndExpand, Children = { nameLabel, @@ -116,21 +122,25 @@ StackLayout createRightLayout() { var color = Color.FromHex(Theme.Current.AboutTextColor); - var leftSpan = new Span { + var leftSpan = new Span + { Text = title, ForegroundColor = color, FontAttributes = FontAttributes.Bold, Style = AppStyles.GetLabelStyle(namedSize, true) }; - var formattedString = new FormattedString { + var formattedString = new FormattedString + { Spans = { leftSpan } }; - if (bindingProperty != null) { - var rightSpan = new Span { + if (bindingProperty != null) + { + var rightSpan = new Span + { ForegroundColor = color, Style = AppStyles.GetLabelStyle() }; @@ -139,7 +149,8 @@ StackLayout createRightLayout() formattedString.Spans.Add(rightSpan); } - return new Label { + return new Label + { FormattedText = formattedString }; } @@ -150,7 +161,8 @@ StackLayout createContributorsBlock() var ilContributor = createContributorLabel("contributor_ilya_lehchylin"); var jpContributor = createContributorLabel("contributor_julia_popova"); - return new StackLayout { + return new StackLayout + { VerticalOptions = LayoutOptions.EndAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, Children = { @@ -163,7 +175,8 @@ StackLayout createContributorsBlock() Label createContributorLabel(string localizedKey, bool bold = false) { - return new Label { + return new Label + { Style = AppStyles.GetLabelStyle(bold: bold), HorizontalTextAlignment = TextAlignment.Center, Text = CrossLocalization.Translate(localizedKey), @@ -173,7 +186,8 @@ Label createContributorLabel(string localizedKey, bool bold = false) Button createButton(string text, string commandProperty) { - var button = new Button { + var button = new Button + { Text = text, HeightRequest = _buttonHeight, Style = AppStyles.GetButtonStyle(), diff --git a/source/EduCATS/Pages/Settings/Base/ViewModels/SettingsPageViewModel.cs b/source/EduCATS/Pages/Settings/Base/ViewModels/SettingsPageViewModel.cs index 94fca362..5951b9e1 100644 --- a/source/EduCATS/Pages/Settings/Base/ViewModels/SettingsPageViewModel.cs +++ b/source/EduCATS/Pages/Settings/Base/ViewModels/SettingsPageViewModel.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; +using EduCATS.Constants; using EduCATS.Data; using EduCATS.Data.User; using EduCATS.Demo; @@ -20,63 +21,76 @@ public class SettingsPageViewModel : ViewModel public SettingsPageViewModel(IPlatformServices services) { - try { + try + { _services = services; setInitData(); setSettings(); - } catch (Exception ex) { + } + catch (Exception ex) + { AppLogs.Log(ex, nameof(SettingsPageViewModel)); } } string _avatar; - public string Avatar { + public string Avatar + { get { return _avatar; } set { SetProperty(ref _avatar, value); } } string _username; - public string Username { + public string Username + { get { return _username; } set { SetProperty(ref _username, value); } } string _group; - public string Group { + public string Group + { get { return _group; } set { SetProperty(ref _group, value); } } string _role; - public string Role { + public string Role + { get { return _role; } set { SetProperty(ref _role, value); } } bool _isLoggedIn; - public bool IsLoggedIn { + public bool IsLoggedIn + { get { return _isLoggedIn; } set { SetProperty(ref _isLoggedIn, value); } } List _settingsList; - public List SettingsList { + public List SettingsList + { get { return _settingsList; } set { SetProperty(ref _settingsList, value); } } object _selectedItem; - public object SelectedItem { + public object SelectedItem + { get { return _selectedItem; } - set { + set + { SetProperty(ref _selectedItem, value); openSettings(_selectedItem); } } Command _closeCommand; - public Command CloseCommand { - get { + public Command CloseCommand + { + get + { return _closeCommand ?? ( _closeCommand = new Command(closePage)); } @@ -99,22 +113,24 @@ void setSettings() createItem(Theme.Current.SettingsLanguageIcon, "settings_language"), createItem(Theme.Current.SettingsThemeIcon, "settings_theme"), createItem(Theme.Current.SettingsFontIcon, "settings_font"), - createItem(Theme.Current.SettingsAboutIcon, "settings_about") + createItem(Theme.Current.SettingsAboutIcon, "settings_about"), }; - + if (_services.Preferences.Server == Servers.EduCatsAddress && IsLoggedIn && !string.IsNullOrEmpty(_services.Preferences.GroupName)) { SettingsList.Add(createItem(Theme.Current.BaseCloseIcon, "settings_delete")); } - if (IsLoggedIn) { + if (IsLoggedIn) + { SettingsList.Add(createItem(Theme.Current.SettingsLogoutIcon, "settings_logout")); } } SettingsPageModel createItem(string icon, string localizedKey) { - return new SettingsPageModel { + return new SettingsPageModel + { Icon = icon, Title = CrossLocalization.Translate(localizedKey) }; @@ -122,21 +138,26 @@ SettingsPageModel createItem(string icon, string localizedKey) void openSettings(object selectedObject) { - try { - if (selectedObject == null || !(selectedObject is SettingsPageModel)) { + try + { + if (selectedObject == null || !(selectedObject is SettingsPageModel)) + { return; } var settings = selectedObject as SettingsPageModel; _services.Device.MainThread(async () => await openPage(settings.Title)); - } catch (Exception ex) { + } + catch (Exception ex) + { AppLogs.Log(ex); } } async Task openPage(string title) { - try { + try + { var serverTitle = CrossLocalization.Translate("settings_server"); var languageTitle = CrossLocalization.Translate("settings_language"); var themeTitle = CrossLocalization.Translate("settings_theme"); @@ -144,23 +165,43 @@ async Task openPage(string title) var deleteTitle = CrossLocalization.Translate("settings_delete"); var aboutTitle = CrossLocalization.Translate("settings_about"); var logoutTitle = CrossLocalization.Translate("settings_logout"); + var profileTitle = CrossLocalization.Translate("settings_about_profile"); - if (title.Equals(serverTitle)) { + if (title.Equals(serverTitle)) + { await _services.Navigation.OpenSettingsServer(serverTitle); - } else if (title.Equals(languageTitle)) { + } + else if (title.Equals(languageTitle)) + { await _services.Navigation.OpenSettingsLanguage(languageTitle); - } else if (title.Equals(themeTitle)) { + } + else if (title.Equals(themeTitle)) + { await _services.Navigation.OpenSettingsTheme(themeTitle); - } else if (title.Equals(fontTitle)) { + } + else if (title.Equals(fontTitle)) + { await _services.Navigation.OpenSettingsFont(fontTitle); - } else if (title.Equals(deleteTitle)) { + } + else if (title.Equals(deleteTitle)) + { await deleteAccount(); - } else if (title.Equals(aboutTitle)) { + } + else if (title.Equals(aboutTitle)) + { await _services.Navigation.OpenSettingsAbout(aboutTitle); - } else if (title.Equals(logoutTitle)) { + } + else if (title.Equals(profileTitle)) + { + await _services.Navigation.OpenProfileAbout(profileTitle); + } + else if (title.Equals(logoutTitle)) + { await logout(); } - } catch (Exception ex) { + } + catch (Exception ex) + { AppLogs.Log(ex); } } @@ -171,14 +212,16 @@ async Task logout() CrossLocalization.Translate("base_warning"), CrossLocalization.Translate("settings_logout_message")); - if (result) { + if (result) + { resetData(); } } async Task deleteAccount() { - if (AppDemo.Instance.IsDemoAccount) { + if (AppDemo.Instance.IsDemoAccount) + { _services.Device.MainThread( () => _services.Dialogs.ShowError( CrossLocalization.Translate("demo_delete_account_error"))); diff --git a/source/EduCATS/Pages/Settings/Base/Views/SettingsPageView.cs b/source/EduCATS/Pages/Settings/Base/Views/SettingsPageView.cs index 1302883a..181de5cc 100644 --- a/source/EduCATS/Pages/Settings/Base/Views/SettingsPageView.cs +++ b/source/EduCATS/Pages/Settings/Base/Views/SettingsPageView.cs @@ -3,10 +3,12 @@ using EduCATS.Helpers.Forms.Converters; using EduCATS.Helpers.Forms.Styles; using EduCATS.Pages.Settings.Base.ViewModels; +using EduCATS.Pages.Settings.Profile.Views; using EduCATS.Pages.Settings.Views.Base.ViewCells; using EduCATS.Themes; using FFImageLoading.Forms; using FFImageLoading.Transformations; +using Nyxbull.Plugins.CrossLocalization; using Xamarin.Forms; namespace EduCATS.Pages.Settings.Base.Views @@ -14,15 +16,20 @@ namespace EduCATS.Pages.Settings.Base.Views public class SettingsPageView : ContentPage { const double _avatarHeight = 60; - const double _userLayoutSpacing = 15; + const double _userLayoutSpacing = 15; + const double _forwardIcon = 20; static Thickness _listMargin = new(10, 0, 10, 0); - static Thickness _userFrameMargin = new(0, 0, 0, 10); + static Thickness _userFrameMargin = new(0, 0, 0, 10); + const double _buttonHeight = 10; + readonly IPlatformServices _services; public SettingsPageView() { NavigationPage.SetHasNavigationBar(this, false); BackgroundColor = Color.FromHex(Theme.Current.AppBackgroundColor); - BindingContext = new SettingsPageViewModel(new PlatformServices()); + _services = new PlatformServices(); + BindingContext = new SettingsPageViewModel(_services); + createViews(); } @@ -31,12 +38,13 @@ void createViews() var userLayout = createUserLayout(); var settingsListView = createList(userLayout); - Content = new StackLayout { + Content = new StackLayout + { BackgroundColor = Color.FromHex(Theme.Current.AppBackgroundColor), Children = { settingsListView } - }; + }; } Frame createUserLayout() @@ -48,40 +56,61 @@ Frame createUserLayout() userRoleLabel.SetBinding(Label.TextProperty, "Role"); var userGroupLabel = createSubtitleLabel(); - userGroupLabel.SetBinding(Label.TextProperty, "Group"); + userGroupLabel.SetBinding(Label.TextProperty, "Group"); + + var forwardIcon = new CachedImage + { + HeightRequest = _forwardIcon, + HorizontalOptions = LayoutOptions.EndAndExpand, + VerticalOptions = LayoutOptions.CenterAndExpand, + Source = ImageSource.FromFile(Theme.Current.BaseArrowForwardIcon) + }; - var usernameLayout = new StackLayout { + var usernameLayout = new StackLayout + { Children = { userLabel, userRoleLabel, - userGroupLabel + userGroupLabel, } }; - var userLayout = new StackLayout { + var userLayout = new StackLayout + { Spacing = _userLayoutSpacing, Orientation = StackOrientation.Horizontal, HorizontalOptions = LayoutOptions.FillAndExpand, Children = { avatar, - usernameLayout + usernameLayout, + forwardIcon, } }; - var userFrame = new Frame { + var userFrame = new Frame + { HasShadow = false, Margin = _userFrameMargin, BackgroundColor = Color.FromHex(Theme.Current.BaseBlockColor), Content = userLayout - }; - + }; + + var profileTitle = CrossLocalization.Translate("settings_about_profile"); userFrame.SetBinding(IsVisibleProperty, "IsLoggedIn"); + var tapGestureRecognizer = new TapGestureRecognizer(); + tapGestureRecognizer.Tapped += async (s, e) => + { + await _services.Navigation.OpenProfileAbout(profileTitle); + }; + userFrame.GestureRecognizers.Add(tapGestureRecognizer); + return userFrame; } CachedImage createAvatar() { - var avatarImage = new CachedImage { + var avatarImage = new CachedImage + { HeightRequest = _avatarHeight, VerticalOptions = LayoutOptions.CenterAndExpand, Transformations = { @@ -96,7 +125,8 @@ CachedImage createAvatar() Label createUserLabel() { - var userLabel = new Label { + var userLabel = new Label + { TextColor = Color.FromHex(Theme.Current.SettingsTitleColor), VerticalOptions = LayoutOptions.CenterAndExpand, Style = AppStyles.GetLabelStyle() @@ -108,7 +138,8 @@ Label createUserLabel() Label createSubtitleLabel() { - return new Label { + return new Label + { TextColor = Color.FromHex(Theme.Current.SettingsGroupUserColor), Style = AppStyles.GetLabelStyle() }; @@ -120,10 +151,11 @@ RoundedListView createList(View header) typeof(SettingsPageViewCell), header: header, headerTopPadding: 10, - footerBottomPadding: 10) { + footerBottomPadding: 10) + { Margin = _listMargin - }; - + }; + settingsListView.ItemTapped += (sender, e) => ((ListView)sender).SelectedItem = null; settingsListView.SetBinding(ListView.SelectedItemProperty, "SelectedItem"); settingsListView.SetBinding(ItemsView.ItemsSourceProperty, "SettingsList"); diff --git a/source/EduCATS/Pages/Settings/Base/Views/ViewCells/SettingsPageViewCell.cs b/source/EduCATS/Pages/Settings/Base/Views/ViewCells/SettingsPageViewCell.cs index c66e52d9..98eac46c 100644 --- a/source/EduCATS/Pages/Settings/Base/Views/ViewCells/SettingsPageViewCell.cs +++ b/source/EduCATS/Pages/Settings/Base/Views/ViewCells/SettingsPageViewCell.cs @@ -17,7 +17,8 @@ public class SettingsPageViewCell : ViewCell public SettingsPageViewCell() { - var settingsIcon = new CachedImage { + var settingsIcon = new CachedImage + { HeightRequest = _settingsIcon, VerticalOptions = LayoutOptions.CenterAndExpand }; @@ -25,7 +26,8 @@ public SettingsPageViewCell() settingsIcon.SetBinding(CachedImage.SourceProperty, "Icon", converter: new StringToImageSourceConverter()); - var settingsTitle = new Label { + var settingsTitle = new Label + { Margin = _settingsTitleMargin, VerticalOptions = LayoutOptions.CenterAndExpand, TextColor = Color.FromHex(Theme.Current.SettingsTitleColor), @@ -34,14 +36,16 @@ public SettingsPageViewCell() settingsTitle.SetBinding(Label.TextProperty, "Title"); - var forwardIcon = new CachedImage { + var forwardIcon = new CachedImage + { HeightRequest = _forwardIcon, HorizontalOptions = LayoutOptions.EndAndExpand, VerticalOptions = LayoutOptions.CenterAndExpand, Source = ImageSource.FromFile(Theme.Current.BaseArrowForwardIcon) }; - View = new StackLayout { + View = new StackLayout + { Padding = _padding, Orientation = StackOrientation.Horizontal, BackgroundColor = Color.FromHex(Theme.Current.BaseBlockColor), diff --git a/source/EduCATS/Pages/Settings/Profile/ViewModels/ProfilePageViewModel.cs b/source/EduCATS/Pages/Settings/Profile/ViewModels/ProfilePageViewModel.cs new file mode 100644 index 00000000..90e7c2a4 --- /dev/null +++ b/source/EduCATS/Pages/Settings/Profile/ViewModels/ProfilePageViewModel.cs @@ -0,0 +1,170 @@ +using System; +using System.Net.Http.Headers; +using System.Net.Http; +using System.Threading.Tasks; +using EduCATS.Constants; +using EduCATS.Data; +using EduCATS.Helpers.Forms; +using EduCATS.Helpers.Logs; +using EduCATS.Networking; +using EduCATS.Pages.Statistics.Students.Models; +using Newtonsoft.Json.Linq; +using Nyxbull.Plugins.CrossLocalization; +using Xamarin.Forms; +using static System.Net.Mime.MediaTypeNames; +using System.Net; +using System.IO; +using System.Text.RegularExpressions; + +namespace EduCATS.Pages.Settings.Profile.ViewModels +{ + public class ProfilePageViewModel : ViewModel + { + readonly IPlatformServices _services; + + public ProfilePageViewModel(IPlatformServices services) + { + try + { + _services = services; + Build = _services.Device.GetBuild(); + Version = _services.Device.GetVersion(); + setInitData(); + } + catch (Exception ex) + { + AppLogs.Log(ex, nameof(ProfilePageViewModel)); + } + } + string _version; + public string Version + { + get { return _version; } + set { SetProperty(ref _version, value); } + } + + string _build; + public string Build + { + get { return _build; } + set { SetProperty(ref _build, value); } + } + + bool _isLoggedIn; + public bool IsLoggedIn + { + get { return _isLoggedIn; } + set { SetProperty(ref _isLoggedIn, value); } + } + + string _username; + public string Username + { + get { return _username; } + set { SetProperty(ref _username, value); } + } + + string _group; + public string Group + { + get { return _group; } + set { SetProperty(ref _group, value); } + } + + string _groupLabel; + public string GroupLabel + { + get { return _groupLabel; } + set { SetProperty(ref _groupLabel, value); } + } + + string _role; + public string Role + { + get { return _role; } + set { SetProperty(ref _role, value); } + } + + string _name; + public string Name + { + get { return _name; } + set { SetProperty(ref _name, value); } + } + + string _surname; + public string SecondName + { + get { return _surname; } + set { SetProperty(ref _surname, value); } + } + + string _patronymic; + public string Patronymic + { + get { return _patronymic; } + set { SetProperty(ref _patronymic, value); } + } + + string _avatar; + public string Avatar + { + get { return _avatar; } + set { SetProperty(ref _avatar, value); } + } + + string _email; + public string Email + { + get { return _email; } + set { SetProperty(ref _email, value); } + } + + string _phone; + public string Phone + { + get { return _phone; } + set { SetProperty(ref _phone, value); } + } + + string _accountinfo; + public string AccountInfo + { + get { return _accountinfo; } + set { SetProperty(ref _accountinfo, value); } + } + + string _about; + public string About + { + get { return _about; } + set { SetProperty(ref _about, value); } + } + + async void setInitData() + { + Username = _services.Preferences.UserLogin; + Avatar = _services.Preferences.Avatar; + var isProfessor = string.IsNullOrEmpty(_services.Preferences.GroupName); + Group = isProfessor ? null : _services.Preferences.GroupName; + GroupLabel = isProfessor ? null : CrossLocalization.Translate("choose_group"); + Role = CrossLocalization.Translate(isProfessor ? "role_professor" : "role_student"); + var profile = await DataAccess.GetProfileInfo(_username); + if (profile.Name != null) + { + var fio = profile.Name.Split(' '); + SecondName = fio[0]; + Name = fio[1]; + Patronymic = fio[2]; + } + else + { + _services.Dialogs.ShowError(CrossLocalization.Translate("today_account_error")); + } + Email = profile.Email; + Phone = profile.Phone; + AccountInfo = profile.SkypeContact; + About = profile.About; + } + } +} diff --git a/source/EduCATS/Pages/Settings/Profile/Views/ProfilePageView.cs b/source/EduCATS/Pages/Settings/Profile/Views/ProfilePageView.cs new file mode 100644 index 00000000..79197636 --- /dev/null +++ b/source/EduCATS/Pages/Settings/Profile/Views/ProfilePageView.cs @@ -0,0 +1,198 @@ +using EduCATS.Constants; +using EduCATS.Data.Models; +using EduCATS.Helpers.Forms; +using EduCATS.Helpers.Forms.Styles; +using EduCATS.Pages.Settings.Profile.ViewModels; +using EduCATS.Themes; +using FFImageLoading.Forms; +using Nyxbull.Plugins.CrossLocalization; +using System.Collections.Generic; +using Xamarin.Forms; +using EduCATS.Helpers.Forms.Converters; +using FFImageLoading.Transformations; + +namespace EduCATS.Pages.Settings.Profile.Views +{ + public class ProfilePageView : ContentPage + { + static Thickness _padding = new Thickness(20); + static Thickness _buttonsPadding = new Thickness(0, 0, 0, 10); + + const double _spacing = 20; + const double _buttonHeight = 50; + const double _avatarHeight = 200; + const double _photoBlockHeight = 400; + + public ProfilePageView() + { + NavigationPage.SetHasNavigationBar(this, false); + Padding = _padding; + BackgroundColor = Color.FromHex(Theme.Current.AppBackgroundColor); + BindingContext = new ProfilePageViewModel(new PlatformServices()); + createViews(); + } + void createViews() + { + Content = new ScrollView + { + Content = new StackLayout + { + Spacing = _spacing, + Padding = _buttonsPadding, + Children = { + createPhotoBlock(), + createMainInfoBlock(), + createSecondInfoBlock() + } + } + }; + } + + StackLayout createPhotoBlock() + { + var avatar = createAvatar(); + + return new StackLayout + { + BackgroundColor = Color.FromHex(Theme.Current.SettingsProfileColor), + Children = + { + avatar + } + }; + } + StackLayout createSecondInfoBlock() + { + var emailLabel = createLabel("email"); + var email = createUnderLabel(); + email.SetBinding(Label.TextProperty, "Email"); + + var phoneLabel = createLabel("phone"); + var phone = createUnderLabel(); + phone.SetBinding(Label.TextProperty, "Phone"); + + var accountinfoLabel = createLabel("accountinfo"); + var accountinfo = createUnderLabel(); + accountinfo.SetBinding(Label.TextProperty, "AccountInfo"); + + var aboutLabel = createLabel("about"); + var about = createUnderLabel(); + about.SetBinding(Label.TextProperty, "About"); + + return new StackLayout + { + BackgroundColor = Color.FromHex(Theme.Current.SettingsProfileColor), + Children = + { + emailLabel, + email, + phoneLabel, + phone, + accountinfoLabel, + accountinfo, + aboutLabel, + about + } + }; + } + + StackLayout createMainInfoBlock() + { + var surnameLabel = createLabel("surname"); + var surname = createUnderLabel(); + surname.SetBinding(Label.TextProperty, "SecondName"); + + var nameLabel = createLabel("name"); + var name = createUnderLabel(); + name.SetBinding(Label.TextProperty, "Name"); + + var patronymicLabel = createLabel("patronymic"); + var patronymic = createUnderLabel(); + patronymic.SetBinding(Label.TextProperty, "Patronymic"); + + var usernameLabel = createLabel("login"); + var login = createUnderLabel(); + login.SetBinding(Label.TextProperty, "Username"); + + var groupLabel = createGroupLabel(); + groupLabel.SetBinding(Label.TextProperty, "GroupLabel"); + var groupName = createUnderLabel(); + groupName.SetBinding(Label.TextProperty, "Group"); + var x = groupName; + if (groupName != null) + { + return new StackLayout + { + BackgroundColor = Color.FromHex(Theme.Current.SettingsProfileColor), + Children = { + surnameLabel, + surname, + nameLabel, + name, + patronymicLabel, + patronymic, + usernameLabel, + login, + groupLabel, + groupName, + } + }; + } + else + { + return new StackLayout + { + BackgroundColor = Color.FromHex(Theme.Current.SettingsProfileColor), + Children = { + surnameLabel, + surname, + nameLabel, + name, + patronymicLabel, + patronymic, + usernameLabel, + login, + } + }; + } + } + Label createLabel(string text) + { + return new Label + { + TextColor = Color.FromHex(Theme.Current.SettingsGroupUserColor), + Style = AppStyles.GetLabelStyle(), + Text = CrossLocalization.Translate(text), + }; + } + Label createUnderLabel() + { + return new Label + { + TextColor = Color.FromHex(Theme.Current.SettingsTitleColor), + Style = AppStyles.GetLabelStyle(), + TextDecorations = TextDecorations.Underline + }; + } + Label createGroupLabel() + { + return new Label + { + TextColor = Color.FromHex(Theme.Current.SettingsTitleColor), + Style = AppStyles.GetLabelStyle(), + }; + } + CachedImage createAvatar() + { + var avatarImage = new CachedImage + { + HeightRequest = _avatarHeight, + VerticalOptions = LayoutOptions.CenterAndExpand, + }; + + avatarImage.SetBinding(CachedImage.SourceProperty, "Avatar", + converter: new Base64ToImageSourceConverter()); + return avatarImage; + } + } +} diff --git a/source/EduCATS/Themes/Interfaces/ITheme.cs b/source/EduCATS/Themes/Interfaces/ITheme.cs index 9a6d7562..bb433f4c 100644 --- a/source/EduCATS/Themes/Interfaces/ITheme.cs +++ b/source/EduCATS/Themes/Interfaces/ITheme.cs @@ -136,7 +136,7 @@ public interface ITheme string SettingsLogoutIcon { get; } string SettingsGroupUserColor { get; } string SettingsTitleColor { get; } - + string SettingsProfileColor { get; } string CheckboxIcon { get; } string CheckboxDescriptionColor { get; } diff --git a/source/EduCATS/Themes/Templates/DefaultTheme.cs b/source/EduCATS/Themes/Templates/DefaultTheme.cs index c5543dd4..ea8cb487 100644 --- a/source/EduCATS/Themes/Templates/DefaultTheme.cs +++ b/source/EduCATS/Themes/Templates/DefaultTheme.cs @@ -145,6 +145,7 @@ public class DefaultTheme : ITheme virtual public string SettingsLogoutIcon => "icon_settings_logout"; virtual public string SettingsGroupUserColor => _greyColor; virtual public string SettingsTitleColor => _blackColor; + virtual public string SettingsProfileColor => _whiteColor; virtual public string CheckboxIcon => "icon_checkmark"; virtual public string CheckboxDescriptionColor => _greyColor; diff --git a/source/EduCATS/packages.lock.json b/source/EduCATS/packages.lock.json index bf3744e9..e8247465 100644 --- a/source/EduCATS/packages.lock.json +++ b/source/EduCATS/packages.lock.json @@ -65,14 +65,25 @@ "Newtonsoft.Json": "12.0.3" } }, + "SkiaSharp": { + "type": "Direct", + "requested": "[2.88.6, )", + "resolved": "2.88.6", + "contentHash": "wdfeBAQrEQCbJIRgAiargzP1Uy+0grZiG4CSgBnhAgcJTsPzlifIaO73JRdwIlT3TyBoeU9jEqzwFUhl4hTYnQ==", + "dependencies": { + "SkiaSharp.NativeAssets.Win32": "2.88.6", + "SkiaSharp.NativeAssets.macOS": "2.88.6", + "System.Memory": "4.5.5" + } + }, "System.IdentityModel.Tokens.Jwt": { "type": "Direct", - "requested": "[6.32.1, )", - "resolved": "6.32.1", - "contentHash": "m6kuL4jfpDHuWkUNS5peyO71nRH8nE2TsTC/n0Isajze4d86xTUmEJ3J0vzYdp4X3OQ72y9KXnQGtxgu9Axd0w==", + "requested": "[7.6.0, )", + "resolved": "7.6.0", + "contentHash": "LIuEbv/kFpuw00yI/mPu+T9NAVdH/u7Y5ChCGzYQQeCg9Pft2C7HFWuO/P+Z7c2RcySNjVk1FmuAheKjYIbOkw==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "6.32.1", - "Microsoft.IdentityModel.Tokens": "6.32.1" + "Microsoft.IdentityModel.JsonWebTokens": "7.6.0", + "Microsoft.IdentityModel.Tokens": "7.6.0" } }, "Xamarin.Essentials": { @@ -130,37 +141,35 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "S44xfpWeoPOQl2YHdp1TB0iYMXF0QHvHHFHsLere9j/0VL5/sTimy7KYjNI+46GXwOjRFvdtt+vIb36UjubEaA==" + "resolved": "7.6.0", + "contentHash": "q4MZ8d0LlWKWtQfxNl9ZRZVOQ7IPEAR6CF4rFKITfuqEUOhqrbwHbqBanReI37155IKb8V/tPJqpPa3KXm9wQQ==" }, "Microsoft.IdentityModel.JsonWebTokens": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "mfEKYEyemkzkLfjxyN5/d1owLpE8JArslFNeDMlNMX75p+U9E67rg5MGzOXHhrOICfDS+OKV2ChJmPPZ9o4HIA==", + "resolved": "7.6.0", + "contentHash": "lsleZbCuh3wZ3RfKd8WJ7E52nIeQQzJsDrgHN+B3Zhzd32UTQ1V3Vjn1N9PssnSulAoEMF0aAiue7ucX+TPoQA==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "6.32.1", - "System.Text.Encoding": "4.3.0", + "Microsoft.IdentityModel.Tokens": "7.6.0", "System.Text.Encodings.Web": "4.7.2", "System.Text.Json": "4.7.2" } }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "g+VienLv1RjOfnxsDid3f6g5MTCRv/vDl3mofabc6m/uDzJpoAlXymo2kqpSAWMrGbqCQI01SvYDxHjmoo3h+Q==", + "resolved": "7.6.0", + "contentHash": "7AVJhNY4y/i96XGfaXovX8aAyYWz6HHtPEPHPpbg5JCchwVaoO08VmmpHe0L2gVagW/iHG0w4a4Xg9gxLXQ/8A==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "6.32.1" + "Microsoft.IdentityModel.Abstractions": "7.6.0" } }, "Microsoft.IdentityModel.Tokens": { "type": "Transitive", - "resolved": "6.32.1", - "contentHash": "8zGvRVWoVQSYg7qQj3zUslleZ/9lwDb6cWgDkIuqr0mCtXK/dr6IDgP7KpWJ5UhkoYYfLvwBl4GYEz4xMH524A==", + "resolved": "7.6.0", + "contentHash": "xvEil42RUe4Si/TuLDvglNXpklgCWMSecPduczXPS2BAypjheUehPqKLwIy8vSdzB4K2zza3yLgmODBt+J6ZxQ==", "dependencies": { "Microsoft.CSharp": "4.5.0", - "Microsoft.IdentityModel.Logging": "6.32.1", + "Microsoft.IdentityModel.Logging": "7.6.0", "System.Security.Cryptography.Cng": "4.5.0", - "System.Text.Encoding": "4.3.0", "System.Text.Encodings.Web": "4.7.2", "System.Text.Json": "4.7.2" } @@ -170,11 +179,6 @@ "resolved": "1.1.0", "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" }, - "Microsoft.NETCore.Targets": { - "type": "Transitive", - "resolved": "1.1.0", - "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==" - }, "MonkeyCache": { "type": "Transitive", "resolved": "1.6.3", @@ -188,13 +192,15 @@ "resolved": "13.0.1", "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" }, - "SkiaSharp": { + "SkiaSharp.NativeAssets.macOS": { "type": "Transitive", - "resolved": "2.80.2", - "contentHash": "D25rzdCwh+3L+XyXqpNa+H/yiLJbE3/R3K/XexwHyQjGdzZvSufFW3oqf3En7hhqSIsxsJ8f5NEZ0J5W5wlGBg==", - "dependencies": { - "System.Memory": "4.5.3" - } + "resolved": "2.88.6", + "contentHash": "Sko9LFxRXSjb3OGh5/RxrVRXxYo48tr5NKuuSy6jB85GrYt8WRqVY1iLOLwtjPiVAt4cp+pyD4i30azanS64dw==" + }, + "SkiaSharp.NativeAssets.Win32": { + "type": "Transitive", + "resolved": "2.88.6", + "contentHash": "7TzFO0u/g2MpQsTty4fyCDdMcfcWI+aLswwfnYXr3gtNS6VLKdMXPMeKpJa3pJSLnUBN6wD0JjuCe8OoLBQ6cQ==" }, "SkiaSharp.Views.Forms": { "type": "Transitive", @@ -212,8 +218,8 @@ }, "System.Memory": { "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "resolved": "4.5.5", + "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==", "dependencies": { "System.Buffers": "4.5.1", "System.Numerics.Vectors": "4.4.0", @@ -225,15 +231,6 @@ "resolved": "4.5.0", "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" }, - "System.Runtime": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, "System.Runtime.CompilerServices.Unsafe": { "type": "Transitive", "resolved": "4.7.1", @@ -244,16 +241,6 @@ "resolved": "4.5.0", "contentHash": "WG3r7EyjUe9CMPFSs6bty5doUqT+q9pbI80hlNzo2SkPkZ4VTuZkGWjpp77JB8+uaL4DFPRdBsAY+DX3dBK92A==" }, - "System.Text.Encoding": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, "System.Text.Encodings.Web": { "type": "Transitive", "resolved": "4.7.2",