From 38cb74ac1016f65889aa44a414c3bb5cccf837f9 Mon Sep 17 00:00:00 2001 From: NoPlagiarism <37241775+NoPlagiarism@users.noreply.github.com> Date: Sat, 18 Jul 2026 19:43:41 +0500 Subject: [PATCH 1/2] feat(clients): OpenVK Desktop and other desktops --- VKAPI/Handlers/Users.php | 4 ++ Web/Models/Entities/Post.php | 4 ++ Web/Models/Entities/User.php | 4 ++ Web/static/img/app_icons/openvk_desktop.png | Bin 0 -> 22937 bytes Web/static/img/app_icons_mini/desktop.svg | 59 ++++++++++++++++++++ data/clients.xml | 1 + 6 files changed, 72 insertions(+) create mode 100644 Web/static/img/app_icons/openvk_desktop.png create mode 100644 Web/static/img/app_icons_mini/desktop.svg diff --git a/VKAPI/Handlers/Users.php b/VKAPI/Handlers/Users.php index 96efd6f05..b885abbd8 100644 --- a/VKAPI/Handlers/Users.php +++ b/VKAPI/Handlers/Users.php @@ -166,6 +166,10 @@ public function get(string $user_ids = "0", string $fields = "", int $offset = 0 case 'android': $platform = 4; break; + + case 'desktop': + $platform = 6; + break; case 'web': case null: diff --git a/Web/Models/Entities/Post.php b/Web/Models/Entities/Post.php index b7e409e80..ef253aebd 100644 --- a/Web/Models/Entities/Post.php +++ b/Web/Models/Entities/Post.php @@ -198,6 +198,10 @@ public function getPlatform(bool $forAPI = false): ?string case 'vk4me': return 'mobile'; break; + + case 'OpenVK Desktop': + return 'desktop'; + break; case null: return null; diff --git a/Web/Models/Entities/User.php b/Web/Models/Entities/User.php index 552231f80..7a045965a 100644 --- a/Web/Models/Entities/User.php +++ b/Web/Models/Entities/User.php @@ -1047,6 +1047,10 @@ public function getOnlinePlatform(bool $forAPI = false): ?string case 'vk4me': return 'mobile'; break; + + case 'OpenVK Desktop': + return 'desktop'; + break; case null: return null; diff --git a/Web/static/img/app_icons/openvk_desktop.png b/Web/static/img/app_icons/openvk_desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..4332ce5ae8032466d33264978d375f2fafca89c1 GIT binary patch literal 22937 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 E05zU_mH+?% literal 0 HcmV?d00001 diff --git a/Web/static/img/app_icons_mini/desktop.svg b/Web/static/img/app_icons_mini/desktop.svg new file mode 100644 index 000000000..476292cb0 --- /dev/null +++ b/Web/static/img/app_icons_mini/desktop.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + diff --git a/data/clients.xml b/data/clients.xml index b32a28f41..abadd3cfe 100644 --- a/data/clients.xml +++ b/data/clients.xml @@ -6,5 +6,6 @@ + From 5753d355541259a9fade061d745ea7f6d2cee1e4 Mon Sep 17 00:00:00 2001 From: NoPlagiarism <37241775+NoPlagiarism@users.noreply.github.com> Date: Sat, 18 Jul 2026 20:18:01 +0500 Subject: [PATCH 2/2] style: linter hates white(spaces) --- VKAPI/Handlers/Users.php | 2 +- Web/Models/Entities/Post.php | 2 +- Web/Models/Entities/User.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/VKAPI/Handlers/Users.php b/VKAPI/Handlers/Users.php index b885abbd8..4acaac51d 100644 --- a/VKAPI/Handlers/Users.php +++ b/VKAPI/Handlers/Users.php @@ -166,7 +166,7 @@ public function get(string $user_ids = "0", string $fields = "", int $offset = 0 case 'android': $platform = 4; break; - + case 'desktop': $platform = 6; break; diff --git a/Web/Models/Entities/Post.php b/Web/Models/Entities/Post.php index c61b73676..dd9bb4724 100644 --- a/Web/Models/Entities/Post.php +++ b/Web/Models/Entities/Post.php @@ -198,7 +198,7 @@ public function getPlatform(bool $forAPI = false): ?string case 'vk4me': return 'mobile'; break; - + case 'OpenVK Desktop': return 'desktop'; break; diff --git a/Web/Models/Entities/User.php b/Web/Models/Entities/User.php index 7a045965a..dae07722d 100644 --- a/Web/Models/Entities/User.php +++ b/Web/Models/Entities/User.php @@ -1047,7 +1047,7 @@ public function getOnlinePlatform(bool $forAPI = false): ?string case 'vk4me': return 'mobile'; break; - + case 'OpenVK Desktop': return 'desktop'; break;