fix(API): users bdate field, can edit/delete comments (#1359)

И парочка фиксов или фич которые позволяют работать OpenVK Native так
как надо.

1. add openvk native support - Просто добавил определение натива как
android/ios клиент
2. Добавил /.well-known/assetlinks.json - По этому адресу автоматически
стучится андроид чтобы проверить что приложению можно открывать ссылки с
этого адреса по умолчанию.
3. Добавил поле bdate в users
4. Добавил инфу о том может ли редачить или удалять комментарий
пользователь.
This commit is contained in:
ZAZiOs 2025-06-29 17:12:55 +03:00 committed by GitHub
parent 93b1202a13
commit c8a97f8b8d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 60 additions and 1 deletions

View file

@ -317,6 +317,32 @@ final class Users extends VKAPIRequestHandler
$response[$i]->custom_fields = $append_array;
break;
case "bdate":
if (!$canView) {
$response[$i]->bdate = "01.01.1970";
break;
}
$visibility = $usr->getBirthdayPrivacy();
$response[$i]->bdate_visibility = $visibility;
$birthday = $usr->getBirthday();
if ($birthday) {
switch ($visibility) {
case 1:
$response[$i]->bdate = $birthday->format('%d.%m');
break;
case 2:
$response[$i]->bdate = $birthday->format('%d.%m.%Y');
break;
case 0:
default:
$response[$i]->bdate = null;
break;
}
} else {
$response[$i]->bdate = null;
}
break;
}
}

View file

@ -877,6 +877,8 @@ final class Wall extends VKAPIRequestHandler
"id" => $comment->getId(),
"from_id" => $oid,
"date" => $comment->getPublicationTime()->timestamp(),
"can_edit" => $post->canBeEditedBy($this->getUser()),
"can_delete" => $post->canBeDeletedBy($this->getUser()),
"text" => $comment->getText(false),
"post_id" => $post->getVirtualId(),
"owner_id" => method_exists($post, 'isPostedOnBehalfOfGroup') && $post->isPostedOnBehalfOfGroup() ? $post->getOwner()->getId() * -1 : $post->getOwner()->getId(),

View file

@ -176,11 +176,13 @@ class Post extends Postable
$platform = $this->getRecord()->api_source_name;
if ($forAPI) {
switch ($platform) {
case 'openvk_native':
case 'openvk_refresh_android':
case 'openvk_legacy_android':
return 'android';
break;
case 'openvk_native_ios':
case 'openvk_ios':
case 'openvk_legacy_ios':
return 'iphone';

View file

@ -971,11 +971,13 @@ class User extends RowModel
$platform = $this->getRecord()->client_name;
if ($forAPI) {
switch ($platform) {
case 'openvk_native':
case 'openvk_refresh_android':
case 'openvk_legacy_android':
return 'android';
break;
case 'openvk_native_ios':
case 'openvk_ios':
case 'openvk_legacy_ios':
return 'iphone';

View file

@ -147,6 +147,29 @@ final class AboutPresenter extends OpenVKPresenter
$this->redirect("https://github.com/openvk/openvk#readme");
}
public function renderAssetLinksJSON(): void
{
# Необходимо любому андроид приложению для автоматического разрешения принимать ссылки с этого сайта.
# Не шарю как писать норм на php поэтому тут чутка на вайбкодил - искренне ваш, ZAZiOs.
header("Content-Type: application/json");
$data = [
[
"relation" => ["delegate_permission/common.handle_all_urls"],
"target" => [
"namespace" => "android_app",
"package_name" => "oss.OpenVK.Native",
"sha256_cert_fingerprints" => [
"79:67:14:23:DC:6E:FA:49:64:1F:F1:81:0E:B0:A3:AE:6E:88:AB:0D:CF:BC:02:96:F3:6D:76:6B:82:94:D6:9C",
],
],
],
];
echo json_encode($data, JSON_UNESCAPED_SLASHES);
exit;
}
public function renderDev(): void
{
$this->redirect("https://docs.ovk.to/");

View file

@ -407,6 +407,8 @@ routes:
handler: "About->robotsTxt"
- url: "/humans.txt"
handler: "About->humansTxt"
- url: "/.well-known/assetlinks.json"
handler: "About->AssetLinksJSON"
- url: "/dev"
handler: "About->dev"
- url: "/iapi/getPhotosFromPost/{num}_{num}"

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View file

@ -3,4 +3,6 @@
<Client tag="vk4me" name="VK4ME" url="http://vk4me.crx.moe/" img="/assets/packages/static/openvk/img/app_icons/vk4me.png" />
<Client tag="openvk_legacy_android" name="OpenVK Legacy" url="https://f-droid.org/packages/uk.openvk.android.legacy/" img="/assets/packages/static/openvk/img/app_icons/openvk_legacy.png" />
<Client tag="openvk_refresh_android" name="OpenVK Refresh" url="https://github.com/openvk/mobile-android-refresh" img="/assets/packages/static/openvk/img/app_icons/openvk_refresh.png" />
</Clients>
<Client tag="openvk_native" name="OpenVK Native" url="https://ovk.to/club9628" img="/assets/packages/static/openvk/img/app_icons/openvk_native.png" />
<Client tag="openvk_native_ios" name="OpenVK Native" url="https://ovk.to/club9628" img="/assets/packages/static/openvk/img/app_icons/openvk_native.png" />
</Clients>