Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6a3723a7ee | |||
| 48ec267f7f | |||
| 852f3b2359 | |||
| 8584c8daff | |||
| 1d9af5bafb | |||
| 1c9278d050 |
@@ -39,7 +39,7 @@ include(cmake/td_mtproto.cmake)
|
||||
include(cmake/td_scheme.cmake)
|
||||
include(cmake/td_tde2e.cmake)
|
||||
include(cmake/td_ui.cmake)
|
||||
include(cmake/generate_appstream_changelog.cmake)
|
||||
include(cmake/generate_appdata_changelog.cmake)
|
||||
|
||||
if (DESKTOP_APP_TEST_APPS)
|
||||
include(cmake/tests.cmake)
|
||||
@@ -139,8 +139,6 @@ set(ayugram_files
|
||||
ayu/ui/utils/color_utils.h
|
||||
ayu/ui/utils/palette.cpp
|
||||
ayu/ui/utils/palette.h
|
||||
ayu/ui/utils/itunes_search.cpp
|
||||
ayu/ui/utils/itunes_search.h
|
||||
ayu/ui/settings/settings_appearance.cpp
|
||||
ayu/ui/settings/settings_appearance.h
|
||||
ayu/ui/settings/settings_ayu_utils.cpp
|
||||
@@ -191,8 +189,8 @@ set(ayugram_files
|
||||
ayu/ui/components/image_view.h
|
||||
ayu/ui/components/icon_picker.cpp
|
||||
ayu/ui/components/icon_picker.h
|
||||
ayu/ui/components/saved_music.cpp
|
||||
ayu/ui/components/saved_music.h
|
||||
ayu/ui/components/now_playing.cpp
|
||||
ayu/ui/components/now_playing.h
|
||||
ayu/libs/json.hpp
|
||||
ayu/libs/json_ext.hpp
|
||||
ayu/libs/sqlite/sqlite3.c
|
||||
@@ -512,14 +510,6 @@ PRIVATE
|
||||
calls/group/calls_group_members_row.h
|
||||
calls/group/calls_group_menu.cpp
|
||||
calls/group/calls_group_menu.h
|
||||
calls/group/calls_group_message_encryption.cpp
|
||||
calls/group/calls_group_message_encryption.h
|
||||
calls/group/calls_group_message_field.cpp
|
||||
calls/group/calls_group_message_field.h
|
||||
calls/group/calls_group_messages.cpp
|
||||
calls/group/calls_group_messages.h
|
||||
calls/group/calls_group_messages_ui.cpp
|
||||
calls/group/calls_group_messages_ui.h
|
||||
calls/group/calls_group_panel.cpp
|
||||
calls/group/calls_group_panel.h
|
||||
calls/group/calls_group_rtmp.cpp
|
||||
@@ -932,8 +922,6 @@ PRIVATE
|
||||
history/view/controls/history_view_voice_record_bar.h
|
||||
history/view/controls/history_view_webpage_processor.cpp
|
||||
history/view/controls/history_view_webpage_processor.h
|
||||
history/view/media/history_view_birthday_suggestion.cpp
|
||||
history/view/media/history_view_birthday_suggestion.h
|
||||
history/view/media/history_view_call.cpp
|
||||
history/view/media/history_view_call.h
|
||||
history/view/media/history_view_contact.cpp
|
||||
@@ -1067,8 +1055,6 @@ PRIVATE
|
||||
history/view/history_view_schedule_box.h
|
||||
history/view/history_view_scheduled_section.cpp
|
||||
history/view/history_view_scheduled_section.h
|
||||
history/view/history_view_self_forwards_tagger.cpp
|
||||
history/view/history_view_self_forwards_tagger.h
|
||||
history/view/history_view_send_action.cpp
|
||||
history/view/history_view_send_action.h
|
||||
history/view/history_view_service_message.cpp
|
||||
@@ -1113,8 +1099,6 @@ PRIVATE
|
||||
history/history_inner_widget.h
|
||||
history/history_location_manager.cpp
|
||||
history/history_location_manager.h
|
||||
history/history_streamed_drafts.cpp
|
||||
history/history_streamed_drafts.h
|
||||
history/history_translation.cpp
|
||||
history/history_translation.h
|
||||
history/history_unread_things.cpp
|
||||
@@ -1207,6 +1191,8 @@ PRIVATE
|
||||
info/profile/info_profile_members_controllers.h
|
||||
info/profile/info_profile_phone_menu.cpp
|
||||
info/profile/info_profile_phone_menu.h
|
||||
info/profile/info_profile_text.cpp
|
||||
info/profile/info_profile_text.h
|
||||
info/profile/info_profile_values.cpp
|
||||
info/profile/info_profile_values.h
|
||||
info/profile/info_profile_widget.cpp
|
||||
@@ -1956,60 +1942,44 @@ if (WIN32)
|
||||
if (QT_VERSION LESS 6)
|
||||
target_link_libraries(Telegram PRIVATE desktop-app::win_directx_helper)
|
||||
endif()
|
||||
|
||||
target_link_options(Telegram PRIVATE /PDBPAGESIZE:8192)
|
||||
elseif (APPLE)
|
||||
if (NOT DESKTOP_APP_USE_PACKAGED)
|
||||
target_link_libraries(Telegram PRIVATE desktop-app::external_iconv)
|
||||
endif()
|
||||
|
||||
# find_program(ACTOOL_EXECUTABLE actool)
|
||||
# if(NOT ACTOOL_EXECUTABLE)
|
||||
# message(FATAL_ERROR "actool not found.")
|
||||
# endif()
|
||||
|
||||
set(icons_path ${CMAKE_CURRENT_SOURCE_DIR}/Telegram/Images.xcassets)
|
||||
if (CMAKE_GENERATOR STREQUAL Xcode)
|
||||
set(ayugram_icons
|
||||
Default
|
||||
Alt
|
||||
Discord
|
||||
Spotify
|
||||
Extera
|
||||
Nothing
|
||||
Bard
|
||||
Yaplus
|
||||
Win95
|
||||
Chibi
|
||||
Chibi2
|
||||
Extera2
|
||||
)
|
||||
|
||||
# set(ICON_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/IconOutput")
|
||||
foreach (icon ${ayugram_icons})
|
||||
# add_custom_command(TARGET Telegram
|
||||
# PRE_LINK
|
||||
# COMMAND mkdir -p "${ICON_OUTPUT_DIR}"
|
||||
# COMMAND ${ACTOOL_EXECUTABLE}
|
||||
# "${CMAKE_CURRENT_SOURCE_DIR}/Telegram/AppIcon-${icon}.icon"
|
||||
# --compile "${ICON_OUTPUT_DIR}"
|
||||
# --app-icon AppIcon-${icon}
|
||||
# --enable-on-demand-resources NO
|
||||
# --development-region en
|
||||
# --target-device mac
|
||||
# --platform macosx
|
||||
# --minimum-deployment-target 10.13
|
||||
# --output-partial-info-plist /dev/null
|
||||
# --output-format human-readable-text
|
||||
# COMMENT "Compiling icon ${icon}"
|
||||
# COMMAND cp "${ICON_OUTPUT_DIR}/AppIcon-${icon}.icns" "$<TARGET_FILE_DIR:Telegram>/../Resources"
|
||||
# )
|
||||
|
||||
# create resulting Assets.car with all icons
|
||||
target_add_resource(Telegram "${CMAKE_CURRENT_SOURCE_DIR}/Telegram/AppIcon-${icon}.icon")
|
||||
set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/Telegram/AppIcon-${icon}.icon" PROPERTIES
|
||||
XCODE_EXPLICIT_FILE_TYPE "folder.iconcomposer.icon"
|
||||
target_add_resource(Telegram ${icons_path})
|
||||
else()
|
||||
set(icon_path ${icons_path}/Icon.iconset)
|
||||
find_program(ICONUTIL iconutil)
|
||||
find_program(PNG2ICNS png2icns)
|
||||
if (ICONUTIL)
|
||||
add_custom_command(
|
||||
OUTPUT Icon.icns
|
||||
COMMAND ${ICONUTIL}
|
||||
ARGS
|
||||
--convert icns
|
||||
--output Icon.icns
|
||||
${icon_path}
|
||||
)
|
||||
endforeach()
|
||||
elseif (PNG2ICNS)
|
||||
add_custom_command(
|
||||
OUTPUT Icon.icns
|
||||
COMMAND ${PNG2ICNS}
|
||||
ARGS
|
||||
Icon.icns
|
||||
${icon_path}/icon_16x16.png
|
||||
${icon_path}/icon_32x32.png
|
||||
${icon_path}/icon_128x128.png
|
||||
${icon_path}/icon_256x256.png
|
||||
${icon_path}/icon_512x512.png
|
||||
)
|
||||
endif()
|
||||
if (ICONUTIL OR PNG2ICNS)
|
||||
set_source_files_properties(Icon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
||||
target_add_resource(Telegram Icon.icns)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(lang_packs
|
||||
@@ -2102,9 +2072,7 @@ set_target_properties(Telegram PROPERTIES
|
||||
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER ${bundle_identifier}
|
||||
XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION ${desktop_app_version_string}
|
||||
XCODE_ATTRIBUTE_PRODUCT_NAME ${output_name}
|
||||
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME AppIcon-Default
|
||||
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES AppIcon-Alt AppIcon-Discord AppIcon-Spotify AppIcon-Extera AppIcon-Nothing AppIcon-Bard AppIcon-Yaplus AppIcon-Win95 AppIcon-Chibi AppIcon-Chibi2 AppIcon-Extera2
|
||||
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS YES
|
||||
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME AppIcon
|
||||
XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME YES
|
||||
XCODE_ATTRIBUTE_COMBINE_HIDPI_IMAGES YES
|
||||
XCODE_ATTRIBUTE_COPY_PHASE_STRIP NO
|
||||
@@ -2310,7 +2278,7 @@ if (LINUX AND DESKTOP_APP_USE_PACKAGED)
|
||||
include(GNUInstallDirs)
|
||||
configure_file("../lib/xdg/com.ayugram.desktop.service" "${CMAKE_CURRENT_BINARY_DIR}/com.ayugram.desktop.service" @ONLY)
|
||||
configure_file("../lib/xdg/com.ayugram.desktop.metainfo.xml" "${CMAKE_CURRENT_BINARY_DIR}/com.ayugram.desktop.metainfo.xml" @ONLY)
|
||||
generate_appstream_changelog(Telegram "${CMAKE_SOURCE_DIR}/changelog.txt" "${CMAKE_CURRENT_BINARY_DIR}/com.ayugram.desktop.metainfo.xml")
|
||||
generate_appdata_changelog(Telegram "${CMAKE_SOURCE_DIR}/changelog.txt" "${CMAKE_CURRENT_BINARY_DIR}/com.ayugram.desktop.metainfo.xml")
|
||||
install(TARGETS Telegram RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
install(FILES "Resources/art/icon16.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps" RENAME "com.ayugram.desktop.png")
|
||||
install(FILES "Resources/art/icon32.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/32x32/apps" RENAME "com.ayugram.desktop.png")
|
||||
|
||||
|
After Width: | Height: | Size: 8.5 KiB |
@@ -1,20 +0,0 @@
|
||||
<svg width="1200" height="1200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1177_97)">
|
||||
<rect width="1200" height="1200" rx="600" fill="#9570FF"/>
|
||||
<g opacity="0.07">
|
||||
<path d="M806.896 -279.064C785.598 -313.026 733.108 -291.661 741.582 -252.479L1066.32 1248.94C1069.88 1265.41 1084.45 1277.16 1101.31 1277.16H1718.15C1746.29 1277.16 1763.42 1246.19 1748.47 1222.35L806.896 -279.064Z" fill="white"/>
|
||||
<path d="M669.079 1606.13C669.079 1640.4 712.592 1655.08 733.354 1627.82L935.184 1362.81C941.526 1354.48 943.905 1343.8 941.696 1333.57L739.866 399.014C730.809 357.077 669.079 363.667 669.079 406.57L669.079 1606.13Z" fill="white"/>
|
||||
<path d="M392.104 -279.064C413.403 -313.026 465.892 -291.661 457.418 -252.479L132.68 1248.94C129.117 1265.41 114.546 1277.16 97.692 1277.16H-519.146C-547.286 1277.16 -564.423 1246.19 -549.473 1222.35L392.104 -279.064Z" fill="white"/>
|
||||
<path d="M529.921 1606.13C529.921 1640.4 486.408 1655.08 465.646 1627.82L263.816 1362.81C257.474 1354.48 255.095 1343.8 257.304 1333.57L459.134 399.014C468.191 357.077 529.921 363.667 529.921 406.57V1606.13Z" fill="white"/>
|
||||
</g>
|
||||
<path d="M672.345 264.951C664.864 253.017 646.428 260.525 649.404 274.293L763.463 801.88C764.715 807.668 769.833 811.799 775.752 811.799H992.407C1002.29 811.799 1008.31 800.915 1003.06 792.538L672.345 264.951Z" fill="white"/>
|
||||
<path d="M623.939 927.397C623.939 939.438 639.222 944.597 646.514 935.018L717.404 841.895C719.631 838.969 720.467 835.214 719.691 831.618L648.801 503.223C645.62 488.487 623.939 490.802 623.939 505.878L623.939 927.397Z" fill="white"/>
|
||||
<path d="M526.655 264.951C534.136 253.017 552.572 260.525 549.596 274.293L435.537 801.88C434.285 807.668 429.167 811.799 423.248 811.799H206.593C196.709 811.799 190.69 800.915 195.941 792.538L526.655 264.951Z" fill="white"/>
|
||||
<path d="M575.061 927.397C575.061 939.438 559.778 944.597 552.486 935.018L481.596 841.895C479.369 838.969 478.533 835.214 479.309 831.618L550.199 503.223C553.38 488.487 575.061 490.802 575.061 505.878V927.397Z" fill="white"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1177_97">
|
||||
<rect width="1200" height="1200" rx="600" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 30 KiB |
@@ -1,82 +0,0 @@
|
||||
<svg width="1200" height="1200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1177_56)">
|
||||
<rect width="1200" height="1200" rx="600" fill="#FDFDFD"/>
|
||||
<path d="M806.896 -279.064C785.598 -313.026 733.108 -291.661 741.582 -252.479L1066.32 1248.94C1069.88 1265.41 1084.45 1277.16 1101.31 1277.16H1718.15C1746.29 1277.16 1763.42 1246.19 1748.47 1222.35L806.896 -279.064Z" fill="url(#paint0_radial_1177_56)" fill-opacity="0.04"/>
|
||||
<path d="M669.079 1606.13C669.079 1640.4 712.592 1655.08 733.354 1627.82L935.184 1362.81C941.526 1354.48 943.905 1343.8 941.696 1333.57L739.866 399.014C730.809 357.077 669.079 363.667 669.079 406.57L669.079 1606.13Z" fill="url(#paint1_radial_1177_56)" fill-opacity="0.04"/>
|
||||
<path d="M392.104 -279.064C413.403 -313.026 465.892 -291.661 457.418 -252.479L132.68 1248.94C129.117 1265.41 114.546 1277.16 97.692 1277.16H-519.146C-547.286 1277.16 -564.423 1246.19 -549.473 1222.35L392.104 -279.064Z" fill="url(#paint2_radial_1177_56)" fill-opacity="0.04"/>
|
||||
<path d="M529.921 1606.13C529.921 1640.4 486.408 1655.08 465.646 1627.82L263.816 1362.81C257.474 1354.48 255.095 1343.8 257.304 1333.57L459.134 399.014C468.191 357.077 529.921 363.667 529.921 406.57V1606.13Z" fill="url(#paint3_radial_1177_56)" fill-opacity="0.04"/>
|
||||
<path d="M672.345 264.951C664.864 253.017 646.428 260.525 649.404 274.293L763.463 801.88C764.715 807.668 769.833 811.799 775.752 811.799H992.407C1002.29 811.799 1008.31 800.915 1003.06 792.538L672.345 264.951Z" fill="url(#paint4_radial_1177_56)"/>
|
||||
<path d="M623.939 927.397C623.939 939.438 639.222 944.597 646.514 935.018L717.404 841.895C719.631 838.969 720.467 835.214 719.691 831.618L648.801 503.223C645.62 488.487 623.939 490.802 623.939 505.878L623.939 927.397Z" fill="url(#paint5_radial_1177_56)"/>
|
||||
<path d="M526.655 264.951C534.136 253.017 552.572 260.525 549.596 274.293L435.537 801.88C434.285 807.668 429.167 811.799 423.248 811.799H206.593C196.709 811.799 190.69 800.915 195.941 792.538L526.655 264.951Z" fill="url(#paint6_radial_1177_56)"/>
|
||||
<path d="M575.061 927.397C575.061 939.438 559.778 944.597 552.486 935.018L481.596 841.895C479.369 838.969 478.533 835.214 479.309 831.618L550.199 503.223C553.38 488.487 575.061 490.802 575.061 505.878V927.397Z" fill="url(#paint7_radial_1177_56)"/>
|
||||
</g>
|
||||
<defs>
|
||||
<radialGradient id="paint0_radial_1177_56" cx="0" cy="0" r="1" gradientTransform="matrix(755.281 3220.39 -3836.69 634.576 -633.706 -1346.76)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1BA1E3"/>
|
||||
<stop offset="0.0001" stop-color="#1BA1E3"/>
|
||||
<stop offset="0.300221" stop-color="#5489D6"/>
|
||||
<stop offset="0.545524" stop-color="#9B72CB"/>
|
||||
<stop offset="0.825372" stop-color="#D96570"/>
|
||||
<stop offset="1" stop-color="#F49C46"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="paint1_radial_1177_56" cx="0" cy="0" r="1" gradientTransform="matrix(755.281 3220.39 -3836.69 634.576 -633.706 -1346.76)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1BA1E3"/>
|
||||
<stop offset="0.0001" stop-color="#1BA1E3"/>
|
||||
<stop offset="0.300221" stop-color="#5489D6"/>
|
||||
<stop offset="0.545524" stop-color="#9B72CB"/>
|
||||
<stop offset="0.825372" stop-color="#D96570"/>
|
||||
<stop offset="1" stop-color="#F49C46"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="paint2_radial_1177_56" cx="0" cy="0" r="1" gradientTransform="matrix(755.281 3220.39 -3836.69 634.576 -633.706 -1346.76)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1BA1E3"/>
|
||||
<stop offset="0.0001" stop-color="#1BA1E3"/>
|
||||
<stop offset="0.300221" stop-color="#5489D6"/>
|
||||
<stop offset="0.545524" stop-color="#9B72CB"/>
|
||||
<stop offset="0.825372" stop-color="#D96570"/>
|
||||
<stop offset="1" stop-color="#F49C46"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="paint3_radial_1177_56" cx="0" cy="0" r="1" gradientTransform="matrix(755.281 3220.39 -3836.69 634.576 -633.706 -1346.76)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1BA1E3"/>
|
||||
<stop offset="0.0001" stop-color="#1BA1E3"/>
|
||||
<stop offset="0.300221" stop-color="#5489D6"/>
|
||||
<stop offset="0.545524" stop-color="#9B72CB"/>
|
||||
<stop offset="0.825372" stop-color="#D96570"/>
|
||||
<stop offset="1" stop-color="#F49C46"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="paint4_radial_1177_56" cx="0" cy="0" r="1" gradientTransform="matrix(274.644 1185.23 -1411.16 229.793 166.356 -110.23)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#22B1F8"/>
|
||||
<stop offset="0.242027" stop-color="#1BA1E3"/>
|
||||
<stop offset="0.381789" stop-color="#5489D6"/>
|
||||
<stop offset="0.648677" stop-color="#9B72CB"/>
|
||||
<stop offset="0.866975" stop-color="#D96570"/>
|
||||
<stop offset="1" stop-color="#F49C46"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="paint5_radial_1177_56" cx="0" cy="0" r="1" gradientTransform="matrix(274.644 1185.23 -1411.16 229.793 166.356 -110.23)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#22B1F8"/>
|
||||
<stop offset="0.242027" stop-color="#1BA1E3"/>
|
||||
<stop offset="0.381789" stop-color="#5489D6"/>
|
||||
<stop offset="0.648677" stop-color="#9B72CB"/>
|
||||
<stop offset="0.866975" stop-color="#D96570"/>
|
||||
<stop offset="1" stop-color="#F49C46"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="paint6_radial_1177_56" cx="0" cy="0" r="1" gradientTransform="matrix(274.644 1185.23 -1411.16 229.793 166.356 -110.23)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#22B1F8"/>
|
||||
<stop offset="0.242027" stop-color="#1BA1E3"/>
|
||||
<stop offset="0.381789" stop-color="#5489D6"/>
|
||||
<stop offset="0.648677" stop-color="#9B72CB"/>
|
||||
<stop offset="0.866975" stop-color="#D96570"/>
|
||||
<stop offset="1" stop-color="#F49C46"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="paint7_radial_1177_56" cx="0" cy="0" r="1" gradientTransform="matrix(274.644 1185.23 -1411.16 229.793 166.356 -110.23)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#22B1F8"/>
|
||||
<stop offset="0.242027" stop-color="#1BA1E3"/>
|
||||
<stop offset="0.381789" stop-color="#5489D6"/>
|
||||
<stop offset="0.648677" stop-color="#9B72CB"/>
|
||||
<stop offset="0.866975" stop-color="#D96570"/>
|
||||
<stop offset="1" stop-color="#F49C46"/>
|
||||
</radialGradient>
|
||||
<clipPath id="clip0_1177_56">
|
||||
<rect width="1200" height="1200" rx="600" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 9.9 KiB |
@@ -1,20 +0,0 @@
|
||||
<svg width="1200" height="1200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1177_50)">
|
||||
<rect width="1200" height="1200" rx="600" fill="#2B2242"/>
|
||||
<g opacity="0.07">
|
||||
<path d="M806.896 -279.064C785.598 -313.026 733.108 -291.661 741.582 -252.479L1066.32 1248.94C1069.88 1265.41 1084.45 1277.16 1101.31 1277.16H1718.15C1746.29 1277.16 1763.42 1246.19 1748.47 1222.35L806.896 -279.064Z" fill="#C3AEFF"/>
|
||||
<path d="M669.079 1606.13C669.079 1640.4 712.592 1655.08 733.354 1627.82L935.184 1362.81C941.526 1354.48 943.905 1343.8 941.696 1333.57L739.866 399.014C730.809 357.077 669.079 363.667 669.079 406.57L669.079 1606.13Z" fill="#C3AEFF"/>
|
||||
<path d="M392.104 -279.064C413.403 -313.026 465.892 -291.661 457.418 -252.479L132.68 1248.94C129.117 1265.41 114.546 1277.16 97.692 1277.16H-519.146C-547.286 1277.16 -564.423 1246.19 -549.473 1222.35L392.104 -279.064Z" fill="#C3AEFF"/>
|
||||
<path d="M529.921 1606.13C529.921 1640.4 486.408 1655.08 465.646 1627.82L263.816 1362.81C257.474 1354.48 255.095 1343.8 257.304 1333.57L459.134 399.014C468.191 357.077 529.921 363.667 529.921 406.57V1606.13Z" fill="#C3AEFF"/>
|
||||
</g>
|
||||
<path d="M672.345 264.951C664.864 253.017 646.428 260.525 649.404 274.293L763.463 801.88C764.715 807.668 769.833 811.799 775.752 811.799H992.407C1002.29 811.799 1008.31 800.915 1003.06 792.538L672.345 264.951Z" fill="#C3AEFF"/>
|
||||
<path d="M623.939 927.397C623.939 939.438 639.222 944.597 646.514 935.018L717.404 841.895C719.631 838.969 720.467 835.214 719.691 831.618L648.801 503.223C645.62 488.487 623.939 490.802 623.939 505.878L623.939 927.397Z" fill="#DCCFFF"/>
|
||||
<path d="M526.655 264.951C534.136 253.017 552.572 260.525 549.596 274.293L435.537 801.88C434.285 807.668 429.167 811.799 423.248 811.799H206.593C196.709 811.799 190.69 800.915 195.941 792.538L526.655 264.951Z" fill="#F5F5F5"/>
|
||||
<path d="M575.061 927.397C575.061 939.438 559.778 944.597 552.486 935.018L481.596 841.895C479.369 838.969 478.533 835.214 479.309 831.618L550.199 503.223C553.38 488.487 575.061 490.802 575.061 505.878V927.397Z" fill="#F5F5F5"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1177_50">
|
||||
<rect width="1200" height="1200" rx="600" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
@@ -1,20 +0,0 @@
|
||||
<svg width="1200" height="1200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1177_53)">
|
||||
<rect width="1200" height="1200" rx="600" fill="#5865F2"/>
|
||||
<g opacity="0.13">
|
||||
<path d="M806.896 -279.064C785.598 -313.026 733.108 -291.661 741.582 -252.479L1066.32 1248.94C1069.88 1265.41 1084.45 1277.16 1101.31 1277.16H1718.15C1746.29 1277.16 1763.42 1246.19 1748.47 1222.35L806.896 -279.064Z" fill="#C3AEFF"/>
|
||||
<path d="M669.079 1606.13C669.079 1640.4 712.592 1655.08 733.354 1627.82L935.184 1362.81C941.526 1354.48 943.905 1343.8 941.696 1333.57L739.866 399.014C730.809 357.077 669.079 363.667 669.079 406.57L669.079 1606.13Z" fill="#C3AEFF"/>
|
||||
<path d="M392.104 -279.064C413.403 -313.026 465.892 -291.661 457.418 -252.479L132.68 1248.94C129.117 1265.41 114.546 1277.16 97.692 1277.16H-519.146C-547.286 1277.16 -564.423 1246.19 -549.473 1222.35L392.104 -279.064Z" fill="#C3AEFF"/>
|
||||
<path d="M529.921 1606.13C529.921 1640.4 486.408 1655.08 465.646 1627.82L263.816 1362.81C257.474 1354.48 255.095 1343.8 257.304 1333.57L459.134 399.014C468.191 357.077 529.921 363.667 529.921 406.57V1606.13Z" fill="#C3AEFF"/>
|
||||
</g>
|
||||
<path d="M672.345 264.951C664.864 253.017 646.428 260.525 649.404 274.293L763.463 801.88C764.715 807.668 769.833 811.799 775.752 811.799H992.407C1002.29 811.799 1008.31 800.915 1003.06 792.538L672.345 264.951Z" fill="white"/>
|
||||
<path d="M623.939 927.397C623.939 939.438 639.222 944.597 646.514 935.018L717.404 841.895C719.631 838.969 720.467 835.214 719.691 831.618L648.801 503.223C645.62 488.487 623.939 490.802 623.939 505.878L623.939 927.397Z" fill="white"/>
|
||||
<path d="M526.655 264.951C534.136 253.017 552.572 260.525 549.596 274.293L435.537 801.88C434.285 807.668 429.167 811.799 423.248 811.799H206.593C196.709 811.799 190.69 800.915 195.941 792.538L526.655 264.951Z" fill="white"/>
|
||||
<path d="M575.061 927.397C575.061 939.438 559.778 944.597 552.486 935.018L481.596 841.895C479.369 838.969 478.533 835.214 479.309 831.618L550.199 503.223C553.38 488.487 575.061 490.802 575.061 505.878V927.397Z" fill="white"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1177_53">
|
||||
<rect width="1200" height="1200" rx="600" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 14 KiB |
@@ -1,36 +0,0 @@
|
||||
<svg width="1200" height="1200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1177_68)">
|
||||
<rect width="1200" height="1200" rx="600" fill="#E83030"/>
|
||||
<g opacity="0.09">
|
||||
<path d="M806.896 -279.064C785.598 -313.026 733.108 -291.661 741.582 -252.479L1066.32 1248.94C1069.88 1265.41 1084.45 1277.16 1101.31 1277.16H1718.15C1746.29 1277.16 1763.42 1246.19 1748.47 1222.35L806.896 -279.064Z" fill="#F6F6F6"/>
|
||||
<path d="M669.079 1606.13C669.079 1640.4 712.592 1655.08 733.354 1627.82L935.184 1362.81C941.526 1354.48 943.905 1343.8 941.696 1333.57L739.866 399.014C730.809 357.077 669.079 363.667 669.079 406.57L669.079 1606.13Z" fill="#F6F6F6"/>
|
||||
<path d="M392.104 -279.064C413.403 -313.026 465.892 -291.661 457.418 -252.479L132.68 1248.94C129.117 1265.41 114.546 1277.16 97.692 1277.16H-519.146C-547.286 1277.16 -564.423 1246.19 -549.473 1222.35L392.104 -279.064Z" fill="#F6F6F6"/>
|
||||
<path d="M529.921 1606.13C529.921 1640.4 486.408 1655.08 465.646 1627.82L263.816 1362.81C257.474 1354.48 255.095 1343.8 257.304 1333.57L459.134 399.014C468.191 357.077 529.921 363.667 529.921 406.57V1606.13Z" fill="#F6F6F6"/>
|
||||
</g>
|
||||
<path d="M672.345 264.951C664.864 253.017 646.428 260.525 649.404 274.293L763.463 801.88C764.715 807.668 769.833 811.799 775.752 811.799H992.407C1002.29 811.799 1008.31 800.915 1003.06 792.538L672.345 264.951Z" fill="url(#paint0_linear_1177_68)" fill-opacity="0.9"/>
|
||||
<path d="M623.939 927.397C623.939 939.438 639.222 944.597 646.514 935.018L717.404 841.895C719.631 838.969 720.467 835.214 719.691 831.618L648.801 503.223C645.62 488.487 623.939 490.802 623.939 505.878L623.939 927.397Z" fill="url(#paint1_linear_1177_68)" fill-opacity="0.9"/>
|
||||
<path d="M526.655 264.951C534.136 253.017 552.572 260.525 549.596 274.293L435.537 801.88C434.285 807.668 429.167 811.799 423.248 811.799H206.593C196.709 811.799 190.69 800.915 195.941 792.538L526.655 264.951Z" fill="url(#paint2_linear_1177_68)" fill-opacity="0.9"/>
|
||||
<path d="M575.061 927.397C575.061 939.438 559.778 944.597 552.486 935.018L481.596 841.895C479.369 838.969 478.533 835.214 479.309 831.618L550.199 503.223C553.38 488.487 575.061 490.802 575.061 505.878V927.397Z" fill="url(#paint3_linear_1177_68)" fill-opacity="0.9"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_1177_68" x1="599.5" y1="259" x2="599.5" y2="940" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="white"/>
|
||||
<stop offset="1" stop-color="white" stop-opacity="0.6"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_1177_68" x1="599.5" y1="259" x2="599.5" y2="940" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="white"/>
|
||||
<stop offset="1" stop-color="white" stop-opacity="0.6"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_1177_68" x1="599.5" y1="259" x2="599.5" y2="940" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="white"/>
|
||||
<stop offset="1" stop-color="white" stop-opacity="0.6"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint3_linear_1177_68" x1="599.5" y1="259" x2="599.5" y2="940" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="white"/>
|
||||
<stop offset="1" stop-color="white" stop-opacity="0.6"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_1177_68">
|
||||
<rect width="1200" height="1200" rx="600" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
@@ -1,10 +0,0 @@
|
||||
<svg width="1200" height="1200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="1200" height="1200" rx="600" fill="#E83030"/>
|
||||
<path d="M479.041 720.27C521.627 762.855 561.526 834.716 591.838 898.874C612.184 941.936 679.015 940.278 694.085 895.099L850.177 427.151C866.118 379.362 820.637 333.894 772.852 349.849L305.497 505.897C260.276 520.996 258.687 587.983 301.805 608.324C365.513 638.379 436.671 677.9 479.041 720.27Z" fill="url(#paint0_linear_1622_21)" fill-opacity="0.9"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_1622_21" x1="527.775" y1="311.105" x2="527.775" y2="1033.51" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="white"/>
|
||||
<stop offset="1" stop-color="white" stop-opacity="0.6"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 766 B |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 75 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
@@ -1,18 +0,0 @@
|
||||
<svg width="1200" height="1200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1177_94)">
|
||||
<rect width="1200" height="1200" rx="600" fill="#FDFDFD"/>
|
||||
<path d="M806.896 -279.064C785.598 -313.026 733.108 -291.661 741.582 -252.479L1066.32 1248.94C1069.88 1265.41 1084.45 1277.16 1101.31 1277.16H1718.15C1746.29 1277.16 1763.42 1246.19 1748.47 1222.35L806.896 -279.064Z" fill="#F7F7F7" fill-opacity="0.8"/>
|
||||
<path d="M669.079 1606.13C669.079 1640.4 712.592 1655.08 733.354 1627.82L935.184 1362.81C941.526 1354.48 943.905 1343.8 941.696 1333.57L739.866 399.014C730.809 357.077 669.079 363.667 669.079 406.57L669.079 1606.13Z" fill="#F7F7F7" fill-opacity="0.8"/>
|
||||
<path d="M392.104 -279.064C413.403 -313.026 465.892 -291.661 457.418 -252.479L132.68 1248.94C129.117 1265.41 114.546 1277.16 97.692 1277.16H-519.146C-547.286 1277.16 -564.423 1246.19 -549.473 1222.35L392.104 -279.064Z" fill="#F7F7F7" fill-opacity="0.8"/>
|
||||
<path d="M529.921 1606.13C529.921 1640.4 486.408 1655.08 465.646 1627.82L263.816 1362.81C257.474 1354.48 255.095 1343.8 257.304 1333.57L459.134 399.014C468.191 357.077 529.921 363.667 529.921 406.57V1606.13Z" fill="#F7F7F7" fill-opacity="0.8"/>
|
||||
<path d="M672.345 264.951C664.864 253.017 646.428 260.525 649.404 274.293L763.463 801.88C764.715 807.668 769.833 811.799 775.752 811.799H992.407C1002.29 811.799 1008.31 800.915 1003.06 792.538L672.345 264.951Z" fill="#D71A21"/>
|
||||
<path d="M623.939 927.397C623.939 939.438 639.222 944.597 646.514 935.018L717.404 841.895C719.631 838.969 720.467 835.214 719.691 831.618L648.801 503.223C645.62 488.487 623.939 490.802 623.939 505.878L623.939 927.397Z" fill="#1C1D1F"/>
|
||||
<path d="M526.655 264.951C534.136 253.017 552.572 260.525 549.596 274.293L435.537 801.88C434.285 807.668 429.167 811.799 423.248 811.799H206.593C196.709 811.799 190.69 800.915 195.941 792.538L526.655 264.951Z" fill="#1C1D1F"/>
|
||||
<path d="M575.061 927.397C575.061 939.438 559.778 944.597 552.486 935.018L481.596 841.895C479.369 838.969 478.533 835.214 479.309 831.618L550.199 503.223C553.38 488.487 575.061 490.802 575.061 505.878V927.397Z" fill="#1C1D1F"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1177_94">
|
||||
<rect width="1200" height="1200" rx="600" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
@@ -1,20 +0,0 @@
|
||||
<svg width="1200" height="1200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1177_59)">
|
||||
<rect width="1200" height="1200" rx="600" fill="black"/>
|
||||
<g opacity="0.1">
|
||||
<path d="M806.896 -279.064C785.598 -313.026 733.108 -291.661 741.582 -252.479L1066.32 1248.94C1069.88 1265.41 1084.45 1277.16 1101.31 1277.16H1718.15C1746.29 1277.16 1763.42 1246.19 1748.47 1222.35L806.896 -279.064Z" fill="#F6F6F6"/>
|
||||
<path d="M669.079 1606.13C669.079 1640.4 712.592 1655.08 733.354 1627.82L935.184 1362.81C941.526 1354.48 943.905 1343.8 941.696 1333.57L739.866 399.014C730.809 357.077 669.079 363.667 669.079 406.57L669.079 1606.13Z" fill="#F6F6F6"/>
|
||||
<path d="M392.104 -279.064C413.403 -313.026 465.892 -291.661 457.418 -252.479L132.68 1248.94C129.117 1265.41 114.546 1277.16 97.692 1277.16H-519.146C-547.286 1277.16 -564.423 1246.19 -549.473 1222.35L392.104 -279.064Z" fill="#F6F6F6"/>
|
||||
<path d="M529.921 1606.13C529.921 1640.4 486.408 1655.08 465.646 1627.82L263.816 1362.81C257.474 1354.48 255.095 1343.8 257.304 1333.57L459.134 399.014C468.191 357.077 529.921 363.667 529.921 406.57V1606.13Z" fill="#F6F6F6"/>
|
||||
</g>
|
||||
<path d="M672.345 264.951C664.864 253.017 646.428 260.525 649.404 274.293L763.463 801.88C764.715 807.668 769.833 811.799 775.752 811.799H992.407C1002.29 811.799 1008.31 800.915 1003.06 792.538L672.345 264.951Z" fill="#1ED760"/>
|
||||
<path d="M623.939 927.397C623.939 939.438 639.222 944.597 646.514 935.018L717.404 841.895C719.631 838.969 720.467 835.214 719.691 831.618L648.801 503.223C645.62 488.487 623.939 490.802 623.939 505.878L623.939 927.397Z" fill="#1ED760"/>
|
||||
<path d="M526.655 264.951C534.136 253.017 552.572 260.525 549.596 274.293L435.537 801.88C434.285 807.668 429.167 811.799 423.248 811.799H206.593C196.709 811.799 190.69 800.915 195.941 792.538L526.655 264.951Z" fill="#1ED760"/>
|
||||
<path d="M575.061 927.397C575.061 939.438 559.778 944.597 552.486 935.018L481.596 841.895C479.369 838.969 478.533 835.214 479.309 831.618L550.199 503.223C553.38 488.487 575.061 490.802 575.061 505.878V927.397Z" fill="#1ED760"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1177_59">
|
||||
<rect width="1200" height="1200" rx="600" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 18 KiB |
@@ -1,64 +0,0 @@
|
||||
<svg width="1200" height="1200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1177_62)">
|
||||
<rect width="1200" height="1200" rx="600" fill="#FDFDFD"/>
|
||||
<g opacity="0.04">
|
||||
<path d="M806.896 -279.064C785.598 -313.026 733.108 -291.661 741.582 -252.479L1066.32 1248.94C1069.88 1265.41 1084.45 1277.16 1101.31 1277.16H1718.15C1746.29 1277.16 1763.42 1246.19 1748.47 1222.35L806.896 -279.064Z" fill="url(#paint0_linear_1177_62)"/>
|
||||
<path d="M669.079 1606.13C669.079 1640.4 712.592 1655.08 733.354 1627.82L935.184 1362.81C941.526 1354.48 943.905 1343.8 941.696 1333.57L739.866 399.014C730.809 357.077 669.079 363.667 669.079 406.57L669.079 1606.13Z" fill="url(#paint1_linear_1177_62)"/>
|
||||
<path d="M392.104 -279.064C413.403 -313.026 465.892 -291.661 457.418 -252.479L132.68 1248.94C129.117 1265.41 114.546 1277.16 97.692 1277.16H-519.146C-547.286 1277.16 -564.423 1246.19 -549.473 1222.35L392.104 -279.064Z" fill="url(#paint2_linear_1177_62)"/>
|
||||
<path d="M529.921 1606.13C529.921 1640.4 486.408 1655.08 465.646 1627.82L263.816 1362.81C257.474 1354.48 255.095 1343.8 257.304 1333.57L459.134 399.014C468.191 357.077 529.921 363.667 529.921 406.57V1606.13Z" fill="url(#paint3_linear_1177_62)"/>
|
||||
</g>
|
||||
<path d="M672.345 264.951C664.864 253.017 646.428 260.525 649.404 274.293L763.463 801.88C764.715 807.668 769.833 811.799 775.752 811.799H992.407C1002.29 811.799 1008.31 800.915 1003.06 792.538L672.345 264.951Z" fill="#D9D9D9"/>
|
||||
<path d="M672.345 264.951C664.864 253.017 646.428 260.525 649.404 274.293L763.463 801.88C764.715 807.668 769.833 811.799 775.752 811.799H992.407C1002.29 811.799 1008.31 800.915 1003.06 792.538L672.345 264.951Z" fill="url(#paint4_linear_1177_62)"/>
|
||||
<path d="M623.939 927.397C623.939 939.438 639.222 944.597 646.514 935.018L717.404 841.895C719.631 838.969 720.467 835.214 719.691 831.618L648.801 503.223C645.62 488.487 623.939 490.802 623.939 505.878L623.939 927.397Z" fill="#D9D9D9"/>
|
||||
<path d="M623.939 927.397C623.939 939.438 639.222 944.597 646.514 935.018L717.404 841.895C719.631 838.969 720.467 835.214 719.691 831.618L648.801 503.223C645.62 488.487 623.939 490.802 623.939 505.878L623.939 927.397Z" fill="url(#paint5_linear_1177_62)"/>
|
||||
<path d="M526.655 264.951C534.136 253.017 552.572 260.525 549.596 274.293L435.537 801.88C434.285 807.668 429.167 811.799 423.248 811.799H206.593C196.709 811.799 190.69 800.915 195.941 792.538L526.655 264.951Z" fill="#D9D9D9"/>
|
||||
<path d="M526.655 264.951C534.136 253.017 552.572 260.525 549.596 274.293L435.537 801.88C434.285 807.668 429.167 811.799 423.248 811.799H206.593C196.709 811.799 190.69 800.915 195.941 792.538L526.655 264.951Z" fill="url(#paint6_linear_1177_62)"/>
|
||||
<path d="M575.061 927.397C575.061 939.438 559.778 944.597 552.486 935.018L481.596 841.895C479.369 838.969 478.533 835.214 479.309 831.618L550.199 503.223C553.38 488.487 575.061 490.802 575.061 505.878V927.397Z" fill="#D9D9D9"/>
|
||||
<path d="M575.061 927.397C575.061 939.438 559.778 944.597 552.486 935.018L481.596 841.895C479.369 838.969 478.533 835.214 479.309 831.618L550.199 503.223C553.38 488.487 575.061 490.802 575.061 505.878V927.397Z" fill="url(#paint7_linear_1177_62)"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_1177_62" x1="-555" y1="543.798" x2="1754" y2="543.798" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF5C4D"/>
|
||||
<stop offset="0.4" stop-color="#EB469F"/>
|
||||
<stop offset="1" stop-color="#8341EF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_1177_62" x1="-555" y1="543.798" x2="1754" y2="543.798" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF5C4D"/>
|
||||
<stop offset="0.4" stop-color="#EB469F"/>
|
||||
<stop offset="1" stop-color="#8341EF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_1177_62" x1="-555" y1="543.798" x2="1754" y2="543.798" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF5C4D"/>
|
||||
<stop offset="0.4" stop-color="#EB469F"/>
|
||||
<stop offset="1" stop-color="#8341EF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint3_linear_1177_62" x1="-555" y1="543.798" x2="1754" y2="543.798" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF5C4D"/>
|
||||
<stop offset="0.4" stop-color="#EB469F"/>
|
||||
<stop offset="1" stop-color="#8341EF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint4_linear_1177_62" x1="194" y1="554.099" x2="1005" y2="554.099" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF5C4D"/>
|
||||
<stop offset="0.4" stop-color="#EB469F"/>
|
||||
<stop offset="1" stop-color="#8341EF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint5_linear_1177_62" x1="194" y1="554.099" x2="1005" y2="554.099" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF5C4D"/>
|
||||
<stop offset="0.4" stop-color="#EB469F"/>
|
||||
<stop offset="1" stop-color="#8341EF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint6_linear_1177_62" x1="194" y1="554.099" x2="1005" y2="554.099" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF5C4D"/>
|
||||
<stop offset="0.4" stop-color="#EB469F"/>
|
||||
<stop offset="1" stop-color="#8341EF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint7_linear_1177_62" x1="194" y1="554.099" x2="1005" y2="554.099" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF5C4D"/>
|
||||
<stop offset="0.4" stop-color="#EB469F"/>
|
||||
<stop offset="1" stop-color="#8341EF"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_1177_62">
|
||||
<rect width="1200" height="1200" rx="600" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 692 B |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Icon / Menu / new_topic</title>
|
||||
<g id="Icon-/-Menu-/-new_topic" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<path d="M12,3.15416667 C12.3865993,3.15416667 12.7,3.46756734 12.7,3.85416667 C12.7,4.24076599 12.3865993,4.55416667 12,4.55416667 L7.24826389,4.55416667 C5.76035508,4.55416667 4.55416667,5.76035508 4.55416667,7.24826389 L4.55416667,16.7517361 C4.55416667,18.2396449 5.76035508,19.4458333 7.24826389,19.4458333 L16.7517361,19.4458333 C18.2396449,19.4458333 19.4458333,18.2396449 19.4458333,16.7517361 L19.4458333,12 C19.4458333,11.6134007 19.759234,11.3 20.1458333,11.3 C20.5324327,11.3 20.8458333,11.6134007 20.8458333,12 L20.8458333,16.7517361 C20.8458333,19.0128436 19.0128436,20.8458333 16.7517361,20.8458333 L7.24826389,20.8458333 C4.98715643,20.8458333 3.15416667,19.0128436 3.15416667,16.7517361 L3.15416667,7.24826389 C3.15416667,4.98715643 4.98715643,3.15416667 7.24826389,3.15416667 L12,3.15416667 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
|
||||
<path d="M19.3511597,5.34872828 C20.2469248,6.24449337 20.2469248,7.69681554 19.3511597,8.59258064 L12.7489306,15.1948097 C12.4577752,15.4859651 12.0995331,15.7011118 11.7057162,15.8213249 L10.029497,16.3329929 C9.10119412,16.6163585 8.11894274,16.0935336 7.83557714,15.1652307 C7.71876473,14.7825544 7.73602986,14.3714738 7.88451862,13.99994 L8.70227653,11.9538276 C8.8286621,11.6375983 9.01800726,11.3503585 9.2588125,11.1095532 L15.5634724,4.80489335 C16.4592375,3.90912826 17.9115597,3.90912826 18.8073247,4.80489335 L19.3511597,5.34872828 Z M18.3612102,6.33867777 L17.8173753,5.79484285 C17.4683442,5.44581176 16.902453,5.44581176 16.5534219,5.79484285 L10.248762,12.0995027 C10.1421189,12.2061458 10.0582655,12.3333529 10.0022944,12.4733983 L9.18453646,14.5195106 C9.15433809,14.59507 9.15082685,14.678672 9.17458316,14.7564974 C9.23221162,14.9452877 9.43197346,15.0516153 9.62076372,14.9939869 L11.296983,14.4823189 C11.4713888,14.4290813 11.63004,14.3338014 11.7589811,14.2048602 L18.3612102,7.60263114 C18.7102413,7.25360006 18.7102413,6.68770886 18.3612102,6.33867777 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
|
||||
<polygon id="Path" fill="#FFFFFF" fill-rule="nonzero" points="15.5907211 6.54669192 17.5755336 8.53150439 16.5855841 9.52145388 14.6007716 7.53664141"></polygon>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.5 KiB |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Icon / Menu / reorder</title>
|
||||
<g id="Icon-/-Menu-/-reorder" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<path d="M20.4060728,15.0078431 C21.2543281,15.0078431 21.9419748,15.6954899 21.9419748,16.5437451 L21.9419748,19.064098 C21.9419748,19.9123532 21.2543281,20.6 20.4060728,20.6 L17.9103341,20.6 C17.0620789,20.6 16.3744321,19.9123532 16.3744321,19.064098 L16.3744321,16.5437451 C16.3744321,15.6954899 17.0620789,15.0078431 17.9103341,15.0078431 L20.4060728,15.0078431 Z M16.6624648,3.4 C18.1998993,3.4 19.4462362,4.64633689 19.4462362,6.18377135 L19.446,10.561 L21.5745455,8.42203928 C21.782239,8.21317523 22.105482,8.18912467 22.339778,8.35046222 L22.4230702,8.41965499 C22.6580423,8.65331023 22.6591098,9.03320772 22.4254545,9.26817977 L19.3380547,12.3729793 C19.0636746,12.6458372 18.6245193,12.6446032 18.3544177,12.3729793 L15.2670178,9.26817977 C15.0333625,9.03320772 15.03443,8.65331023 15.2694021,8.41965499 C15.5043741,8.18599974 15.8842716,8.18706723 16.1179268,8.42203928 L18.246,10.563 L18.2462362,6.18377135 C18.2462362,5.30907859 17.5371576,4.6 16.6624648,4.6 L6.36754271,4.6 C5.49284994,4.6 4.78377135,5.30907859 4.78377135,6.18377135 L4.783,15.007 L5.4316407,15.0078431 C6.27989595,15.0078431 6.96754271,15.6954899 6.96754271,16.5437451 L6.96754271,19.064098 C6.96754271,19.9123532 6.27989595,20.6 5.4316407,20.6 L2.93590201,20.6 C2.08764675,20.6 1.4,19.9123532 1.4,19.064098 L1.4,16.5437451 C1.4,15.6954899 2.08764675,15.0078431 2.93590201,15.0078431 L3.583,15.007 L3.58377135,6.18377135 C3.58377135,4.64633689 4.83010824,3.4 6.36754271,3.4 L16.6624648,3.4 Z M12.9188568,15.0078431 C13.767112,15.0078431 14.4547588,15.6954899 14.4547588,16.5437451 L14.4547588,19.064098 C14.4547588,19.9123532 13.767112,20.6 12.9188568,20.6 L10.4231181,20.6 C9.57486282,20.6 8.88721607,19.9123532 8.88721607,19.064098 L8.88721607,16.5437451 C8.88721607,15.6954899 9.57486282,15.0078431 10.4231181,15.0078431 L12.9188568,15.0078431 Z M20.4060728,16.2078431 L17.9103341,16.2078431 C17.7248206,16.2078431 17.5744321,16.3582316 17.5744321,16.5437451 L17.5744321,19.064098 C17.5744321,19.2496115 17.7248206,19.4 17.9103341,19.4 L20.4060728,19.4 C20.5915864,19.4 20.7419748,19.2496115 20.7419748,19.064098 L20.7419748,16.5437451 C20.7419748,16.3582316 20.5915864,16.2078431 20.4060728,16.2078431 Z M5.4316407,16.2078431 L2.93590201,16.2078431 C2.75038845,16.2078431 2.6,16.3582316 2.6,16.5437451 L2.6,19.064098 C2.6,19.2496115 2.75038845,19.4 2.93590201,19.4 L5.4316407,19.4 C5.61715425,19.4 5.76754271,19.2496115 5.76754271,19.064098 L5.76754271,16.5437451 C5.76754271,16.3582316 5.61715425,16.2078431 5.4316407,16.2078431 Z M12.9188568,16.2078431 L10.4231181,16.2078431 C10.2376045,16.2078431 10.0872161,16.3582316 10.0872161,16.5437451 L10.0872161,19.064098 C10.0872161,19.2496115 10.2376045,19.4 10.4231181,19.4 L12.9188568,19.4 C13.1043703,19.4 13.2547588,19.2496115 13.2547588,19.064098 L13.2547588,16.5437451 C13.2547588,16.3582316 13.1043703,16.2078431 12.9188568,16.2078431 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.2 KiB |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Icon / Menu / birthday_add</title>
|
||||
<g id="Icon-/-Menu-/-birthday_add" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<path d="M19.4857266,16.2888889 C19.8170975,16.2888889 20.0857266,16.557518 20.0857266,16.8888889 L20.0856667,18.7328889 L21.9305556,18.7333333 C22.2287893,18.7333333 22.4762023,18.9509229 22.5227026,19.2360102 L22.5305556,19.3333333 C22.5305556,19.6647042 22.2619264,19.9333333 21.9305556,19.9333333 L20.0856667,19.9328889 L20.0857266,21.7777778 C20.0857266,22.0760115 19.868137,22.3234245 19.5830498,22.3699248 L19.4857266,22.3777778 C19.1543558,22.3777778 18.8857266,22.1091486 18.8857266,21.7777778 L18.8856667,19.9328889 L17.0416667,19.9333333 C16.7434329,19.9333333 16.4960199,19.7157437 16.4495197,19.4306564 L16.4416667,19.3333333 C16.4416667,19.0019625 16.7102958,18.7333333 17.0416667,18.7333333 L18.8856667,18.7328889 L18.8857266,16.8888889 C18.8857266,16.5906551 19.1033163,16.3432421 19.3884035,16.2967419 L19.4857266,16.2888889 Z M8.41204757,10.3213892 C8.4968615,10.6417222 8.30593555,10.9701587 7.98560254,11.0549726 C6.00141779,11.5803212 4.96111111,12.4866846 4.96111111,13.4472478 C4.96111111,13.5837542 4.98907974,13.7199344 5.04305686,13.8546242 C5.05815315,13.8780132 5.06968916,13.9034625 5.07949993,13.9299664 C5.67337842,15.1862671 8.51737301,16.291625 12,16.291625 C15.9250424,16.291625 19.0388889,14.8875907 19.0388889,13.4472478 C19.0388889,12.5127848 18.0774561,11.638341 16.2036879,11.1068602 C15.8848931,11.0164364 15.6997618,10.684699 15.7901857,10.3659042 C15.8806095,10.0471093 16.2123468,9.86197804 16.5311417,9.95240189 C18.8627692,10.6137512 20.2388889,11.8653615 20.2388889,13.4472478 C20.2388889,13.979393 20.0501074,14.4768826 19.7060685,14.9283577 C19.6140075,14.9115452 19.5205276,14.9027778 19.425,14.9027778 C18.6281077,14.9027778 17.9737164,15.5128973 17.9034658,16.2914966 L17.9034247,16.3114033 C16.4008483,17.0540936 14.3028164,17.491625 12,17.491625 C9.47842329,17.491625 7.20238688,16.967017 5.68481102,16.0915954 L6.42111111,18.7214444 L6.44,18.7222222 L6.44511111,18.8074444 L6.45530551,18.8430624 L6.4709096,18.9292533 C6.76328017,19.9158038 9.09544378,20.8722222 12,20.8722222 C13.262879,20.8722222 14.4175503,20.6914166 15.3434009,20.4059417 C15.6196573,20.6869274 16.004765,20.8611111 16.4305556,20.8611111 L17.2836209,20.8606349 C16.0386964,21.6207641 14.1238391,22.0722222 12,22.0722222 C8.52835644,22.0722222 5.61510021,20.8659524 5.27347003,19.0770457 L3.95558458,14.3602924 C3.82830877,14.0698882 3.76111111,13.7647359 3.76111111,13.4472478 C3.76111111,11.8222874 5.22885268,10.5435228 7.67846416,9.89494413 C7.99879717,9.81013021 8.32723365,10.0010562 8.41204757,10.3213892 Z M12.4583333,7.42777778 C13.380342,7.42777778 14.1277778,8.17521351 14.1277778,9.09722222 L14.1277778,13.0694444 C14.1277778,13.9914532 13.380342,14.7388889 12.4583333,14.7388889 L11.8472222,14.7388889 C10.9252135,14.7388889 10.1777778,13.9914532 10.1777778,13.0694444 L10.1777778,9.09722222 C10.1777778,8.17521351 10.9252135,7.42777778 11.8472222,7.42777778 L12.4583333,7.42777778 Z M12.4583333,8.62777778 L11.8472222,8.62777778 C11.5879552,8.62777778 11.3777778,8.83795521 11.3777778,9.09722222 L11.3777778,13.0694444 C11.3777778,13.3287115 11.5879552,13.5388889 11.8472222,13.5388889 L12.4583333,13.5388889 C12.7176003,13.5388889 12.9277778,13.3287115 12.9277778,13.0694444 L12.9277778,9.09722222 C12.9277778,8.83795521 12.7176003,8.62777778 12.4583333,8.62777778 Z M12.0207549,1.46944444 C12.8988738,1.46944444 14.1277778,3.40600437 14.1277778,4.64408449 C14.1277778,6.06372135 13.4385567,6.82401696 12,6.82401696 C10.3912998,6.82401696 9.40287158,5.20228362 10.2271046,3.79129771 L10.3125678,3.6554701 C10.6068441,3.21972221 11.1748869,2.01278865 11.1599792,2.03824823 C11.3659094,1.68655903 11.6259528,1.46944444 12.0207549,1.46944444 Z M12.1011111,2.85144444 L12.0713457,2.91751396 L11.8811707,3.30172279 L11.6899023,3.66987931 C11.557639,3.91763569 11.4205876,4.1589191 11.3070312,4.32706715 C10.8867233,4.94943561 11.2769618,5.62401696 12,5.62401696 C12.7481114,5.62401696 12.9277778,5.42582286 12.9277778,4.64408449 C12.9277778,4.29594473 12.7310746,3.77237759 12.4219529,3.28525029 C12.3528553,3.1763634 12.281237,3.07447531 12.2108288,2.98385177 L12.1011111,2.85144444 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 4.4 KiB |
@@ -22,7 +22,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_menu_my_stories" = "My Stories";
|
||||
"lng_menu_my_groups" = "My Groups";
|
||||
"lng_menu_my_channels" = "My Channels";
|
||||
"lng_open_menu" = "Open navigation menu";
|
||||
|
||||
"lng_disable_notifications_from_tray" = "Disable notifications";
|
||||
"lng_enable_notifications_from_tray" = "Enable notifications";
|
||||
@@ -128,10 +127,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_cancel" = "Cancel";
|
||||
"lng_continue" = "Continue";
|
||||
"lng_close" = "Close";
|
||||
"lng_minimize_window" = "Minimize";
|
||||
"lng_maximize_window" = "Maximize";
|
||||
"lng_restore_window" = "Restore";
|
||||
"lng_go_back" = "Go back";
|
||||
"lng_connecting" = "Connecting...";
|
||||
"lng_reconnecting#one" = "Reconnect in {count} s...";
|
||||
"lng_reconnecting#other" = "Reconnect in {count} s...";
|
||||
@@ -393,7 +388,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_country_ph" = "Search";
|
||||
"lng_country_none" = "Country not found";
|
||||
"lng_country_select" = "Select Country";
|
||||
"lng_phone_number" = "Phone number";
|
||||
|
||||
"lng_code_ph" = "Code";
|
||||
"lng_code_desc" = "We've sent an activation code to your phone.\nPlease enter it below.";
|
||||
@@ -528,8 +522,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_settings_use_native_notifications" = "Use native notifications";
|
||||
"lng_settings_notifications_position" = "Location on the screen";
|
||||
"lng_settings_notifications_count" = "Notifications count";
|
||||
"lng_settings_notifications_display" = "Display for notifications";
|
||||
"lng_settings_notifications_display_default" = "Default";
|
||||
"lng_settings_sound_allowed" = "Allow sound";
|
||||
"lng_settings_alert_windows" = "Flash the taskbar icon";
|
||||
"lng_settings_alert_mac" = "Bounce the Dock icon";
|
||||
@@ -785,7 +777,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_settings_birthday_contacts" = "Only your contacts can see your birthday. {link}";
|
||||
"lng_settings_birthday_contacts_link" = "Change >";
|
||||
"lng_settings_birthday_saved" = "Your date of birth was updated.";
|
||||
"lng_settings_birthday_suggested" = "Date of birth was suggested to {user}";
|
||||
"lng_settings_birthday_reset" = "Remove";
|
||||
"lng_settings_channel_label" = "Personal channel";
|
||||
"lng_settings_channel_add" = "Add";
|
||||
@@ -993,7 +984,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_settings_color_subscribe" = "Subscribe to {link} to choose a custom color for your name.";
|
||||
"lng_settings_color_changed" = "Your name color has been updated!";
|
||||
"lng_settings_color_changed_channel" = "Your channel color has been updated!";
|
||||
"lng_settings_color_apply" = "Apply Style";
|
||||
|
||||
"lng_suggest_hide_new_title" = "Hide new chats?";
|
||||
"lng_suggest_hide_new_about" = "You are receiving lots of new chats from users who are not in your Contact List.\n\nDo you want to have such chats **automatically muted** and **archived**?";
|
||||
@@ -1612,10 +1602,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_info_birthday_today_years#other" = "{date}\n({count} years old)";
|
||||
"lng_info_birthday_today_label" = "Birthday today";
|
||||
"lng_info_birthday_today" = "{emoji} {date}";
|
||||
"lng_info_notes_label" = "Notes";
|
||||
"lng_info_notes_private" = "only visible to you";
|
||||
"lng_edit_note" = "Edit Note";
|
||||
"lng_delete_note" = "Delete Note";
|
||||
"lng_info_bio_label" = "Bio";
|
||||
"lng_info_link_label" = "Link";
|
||||
"lng_info_location_label" = "Location";
|
||||
@@ -1639,7 +1625,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_info_group_title" = "Group Info";
|
||||
"lng_info_channel_title" = "Channel Info";
|
||||
"lng_info_topic_title" = "Topic Info";
|
||||
"lng_info_thread_title" = "Thread Info";
|
||||
"lng_profile_enable_notifications" = "Notifications";
|
||||
"lng_profile_send_message" = "Send Message";
|
||||
"lng_profile_open_app" = "Open App";
|
||||
@@ -1654,9 +1639,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_profile_suggest_photo_from_clipboard" = "Suggest From Clipboard";
|
||||
"lng_profile_set_photo_for" = "Set Profile Photo";
|
||||
"lng_profile_set_photo_for_from_clipboard" = "Set From Clipboard";
|
||||
"lng_profile_set_photo_for_about" = "You can replace {user}'s photo with another photo that only you will see.";
|
||||
"lng_profile_photo_reset" = "Reset to Original";
|
||||
"lng_profile_photo_reset_sure" = "Are you sure you want to reset {user}'s photo to the original?";
|
||||
"lng_profile_photo_from_clipboard" = "From clipboard";
|
||||
"lng_profile_suggest_sure" = "You can suggest {user} to set this photo for their Telegram profile.";
|
||||
"lng_profile_suggest_button" = "Suggest";
|
||||
@@ -2239,7 +2222,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_action_gift_transferred_unknown" = "Someone transferred you a gift";
|
||||
"lng_action_gift_transferred_unknown_channel" = "Someone transferred a gift to {channel}";
|
||||
"lng_action_gift_transferred_self" = "You transferred a unique collectible";
|
||||
"lng_action_gift_displayed_self" = "You've started displaying {name} on your Telegram profile page.";
|
||||
"lng_action_gift_transferred_self_channel" = "You transferred a gift to {channel}";
|
||||
"lng_action_gift_transferred_mine" = "You transferred a gift to {user}";
|
||||
"lng_action_gift_received_anonymous" = "Unknown user sent you a gift for {cost}";
|
||||
@@ -2280,9 +2262,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_action_suggested_video_me" = "You suggested this photo for {user}'s Telegram profile.";
|
||||
"lng_action_suggested_video" = "{user} suggests this photo for your Telegram profile.";
|
||||
"lng_action_suggested_video_button" = "View Photo";
|
||||
"lng_action_suggested_birthday_me" = "You suggest {user} add a date of birth:";
|
||||
"lng_action_suggested_birthday" = "{user} suggests you add your date of birth:";
|
||||
"lng_action_suggested_birtday_button" = "View";
|
||||
"lng_action_attach_menu_bot_allowed" = "You allowed this bot to message you when you added it to your attachment menu.";
|
||||
"lng_action_webapp_bot_allowed" = "You allowed this bot to message you in its web-app.";
|
||||
"lng_action_set_wallpaper_me" = "You set a new wallpaper for this chat";
|
||||
@@ -2303,7 +2282,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_action_topic_hidden" = "\"{topic}\" was hidden";
|
||||
"lng_action_topic_unhidden" = "\"{topic}\" was unhidden";
|
||||
"lng_action_topic_placeholder" = "topic";
|
||||
"lng_action_topic_bot_thread" = "thread";
|
||||
"lng_action_topic_renamed" = "{from} renamed the {link} to \"{title}\"";
|
||||
"lng_action_topic_icon_changed" = "{from} changed the {link} icon to {emoji}";
|
||||
"lng_action_topic_icon_removed" = "{from} removed the {link} icon";
|
||||
@@ -2601,10 +2579,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_bot_allow_write_title" = "Allow messaging";
|
||||
"lng_bot_allow_write" = "Do you want to allow this bot to send you messages?";
|
||||
"lng_bot_allow_write_confirm" = "Allow";
|
||||
"lng_bot_new_chat" = "New Chat";
|
||||
"lng_bot_new_thread_title" = "New Thread";
|
||||
"lng_bot_new_thread_about" = "Type any message to create a new thread.";
|
||||
"lng_bot_show_threads_list" = "Show Threads List";
|
||||
|
||||
"lng_attach_failed" = "Failed";
|
||||
"lng_attach_file" = "File";
|
||||
@@ -3609,19 +3583,17 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_gift_premium_by_stars" = "or {amount}";
|
||||
"lng_gift_stars_subtitle" = "Gift Stars";
|
||||
"lng_gift_stars_about" = "Give {name} gifts that can be kept on your profile or converted to Stars. {link}";
|
||||
"lng_gift_stars_about_collectibles" = "Collectible gifts are unique digital items you can exchange or sell. {link}";
|
||||
"lng_gift_stars_link" = "What are Stars >";
|
||||
"lng_gift_stars_limited" = "limited";
|
||||
"lng_gift_stars_sold_out" = "sold out";
|
||||
"lng_gift_stars_resale" = "resale";
|
||||
"lng_gift_stars_on_sale" = "on sale";
|
||||
"lng_gift_stars_premium" = "premium";
|
||||
"lng_gift_stars_your_left#one" = "{count} left";
|
||||
"lng_gift_stars_your_left#other" = "{count} left";
|
||||
"lng_gift_stars_your_finished" = "none left";
|
||||
"lng_gift_stars_tabs_all" = "All Gifts";
|
||||
"lng_gift_stars_tabs_my" = "My Gifts";
|
||||
"lng_gift_stars_tabs_collectibles" = "Collectibles";
|
||||
"lng_gift_stars_tabs_limited" = "Limited";
|
||||
"lng_gift_stars_tabs_in_stock" = "In Stock";
|
||||
"lng_gift_stars_tabs_resale" = "Resale";
|
||||
"lng_gift_send_title" = "Send a Gift";
|
||||
"lng_gift_send_message" = "Enter Message";
|
||||
"lng_gift_send_anonymous" = "Hide My Name";
|
||||
@@ -3690,10 +3662,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_gift_self_about" = "Buy yourself a gift to display on your page or reserve for later.\n\nLimited-edition gifts upgraded to collectibles can be gifted to others later.";
|
||||
"lng_gift_channel_title" = "Send a Gift";
|
||||
"lng_gift_channel_about" = "Select a gift to show appreciation for {name}.";
|
||||
"lng_gift_released_by" = "released by {name}";
|
||||
"lng_gift_released_by" = "Released by {name}";
|
||||
"lng_gift_unique_owner" = "Owner";
|
||||
"lng_gift_unique_address_copied" = "Address copied to clipboard.";
|
||||
"lng_gift_unique_telegram" = "Telegram";
|
||||
"lng_gift_unique_status" = "Status";
|
||||
"lng_gift_unique_status_non" = "Non-Unique";
|
||||
"lng_gift_unique_upgrade" = "Upgrade";
|
||||
@@ -3715,10 +3686,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_gift_unique_info_sender_comment" = "Gifted by {from} to {recipient} on {date} with the comment \"{text}\".";
|
||||
"lng_gift_unique_info_reciever" = "Gifted to {recipient} on {date}.";
|
||||
"lng_gift_unique_info_reciever_comment" = "Gifted to {recipient} on {date} with the comment \"{text}\".";
|
||||
"lng_gift_unique_info_remove_title" = "Remove Description";
|
||||
"lng_gift_unique_info_remove_text" = "Do you want to permanently remove this description from your gift?";
|
||||
"lng_gift_unique_info_remove_confirm" = "Remove for {cost}";
|
||||
"lng_gift_unique_info_removed" = "Removed {name}'s Description!";
|
||||
"lng_gift_availability_left#one" = "{count} of {amount} left";
|
||||
"lng_gift_availability_left#other" = "{count} of {amount} left";
|
||||
"lng_gift_availability_none" = "None of {amount} left";
|
||||
@@ -3783,11 +3750,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_gift_upgrade_tradable_about_user" = "{name} will be able to sell the gift on Telegram and NFT marketplaces.";
|
||||
"lng_gift_upgrade_tradable_about_channel" = "Admins of {name} will be able to sell the gift on Telegram and NFT marketplaces.";
|
||||
"lng_gift_upgrade_button" = "Upgrade for {price}";
|
||||
"lng_gift_upgrade_decreases" = "Price decreases in {time}";
|
||||
"lng_gift_upgrade_see_table" = "See how this price will decrease {arrow}";
|
||||
"lng_gift_upgrade_prices_about" = "Upgrade cost drops every minute.";
|
||||
"lng_gift_upgrade_prices_title" = "Upgrade Cost";
|
||||
"lng_gift_upgrade_prices_subtitle" = "Users who upgrade their gifts first get collectibles with shorter numbers.";
|
||||
"lng_gift_upgrade_free" = "Upgrade for Free";
|
||||
"lng_gift_upgrade_confirm" = "Confirm";
|
||||
"lng_gift_upgrade_add_my" = "Add my name to the gift";
|
||||
@@ -3832,8 +3794,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_gift_transfer_sell" = "Sell";
|
||||
"lng_gift_transfer_update" = "Change Price";
|
||||
"lng_gift_transfer_unlist" = "Unlist";
|
||||
"lng_gift_transfer_locked_title" = "Action Locked";
|
||||
"lng_gift_transfer_locked_text" = "Transfer this gift to your Telegram account on Fragment to unlock this action.";
|
||||
"lng_gift_sell_unlist_title" = "Unlist {name}";
|
||||
"lng_gift_sell_unlist_sure" = "Are you sure you want to unlist your gift?";
|
||||
"lng_gift_sell_title" = "Price in Stars";
|
||||
@@ -3912,9 +3872,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_gift_collection_delete_sure" = "Are you sure you want to delete this collection?";
|
||||
"lng_gift_collection_delete_button" = "Delete";
|
||||
"lng_gift_collection_add_to" = "Add to Collection";
|
||||
"lng_gift_collection_reorder" = "Reorder";
|
||||
"lng_gift_collection_reorder_exit" = "Apply Reorder";
|
||||
"lng_gift_collection_remove_from" = "Remove from Collection";
|
||||
"lng_gift_locked_title" = "Gift Locked";
|
||||
|
||||
"lng_accounts_limit_title" = "Limit Reached";
|
||||
@@ -4400,7 +4357,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_context_view_group" = "View group info";
|
||||
"lng_context_view_channel" = "View channel info";
|
||||
"lng_context_view_topic" = "View topic info";
|
||||
"lng_context_view_thread" = "View thread info";
|
||||
"lng_context_hide_psa" = "Hide this announcement";
|
||||
"lng_context_pin_to_top" = "Pin";
|
||||
"lng_context_unpin_from_top" = "Unpin";
|
||||
@@ -4537,10 +4493,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_add_tag_phrase" = "to messages {arrow}";
|
||||
"lng_add_tag_phrase_long" = "to your Saved Messages {arrow}";
|
||||
"lng_unlock_tags" = "Unlock";
|
||||
"lng_add_tag_selector#one" = "You can add a tag to the message";
|
||||
"lng_add_tag_selector#other" = "You can add a tag to the messages";
|
||||
"lng_message_tagged_with" = "Message tagged with {emoji}";
|
||||
"lng_tagged_view_saved" = "View";
|
||||
|
||||
"lng_context_animated_emoji" = "This message contains emoji from **{name} pack**.";
|
||||
"lng_context_animated_emoji_many#one" = "This message contains emoji from **{count} pack**.";
|
||||
@@ -4822,16 +4774,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_contact_phone_after" = "Phone number will be visible once {user} adds you as a contact.";
|
||||
"lng_contact_share_phone" = "Share my phone number";
|
||||
"lng_contact_phone_will_be_shared" = "You can make your phone visible to {user}.";
|
||||
"lng_contact_add_notes" = "Note";
|
||||
"lng_contact_add_notes_about" = "Notes are only visible to you.";
|
||||
"lng_contact_notes_limit_reached#one" = "You've reached the contact note limit. Please make the note shorter by {count} character.";
|
||||
"lng_contact_notes_limit_reached#other" = "You've reached the contact note limit. Please make the note shorter by {count} characters.";
|
||||
"lng_suggest_photo_for" = "Suggest Photo for {user}";
|
||||
"lng_suggest_birthday" = "Suggest Date of Birth";
|
||||
"lng_suggest_birthday_box_title" = "{user}'s Date of Birth";
|
||||
"lng_suggest_birthday_box_confirm" = "Suggest";
|
||||
"lng_set_photo_for_user" = "Set Photo for {user}";
|
||||
"lng_contact_photo_replace_info" = "You can replace {user}'s photo with another photo that only you will see.";
|
||||
"lng_edit_contact_title" = "Edit contact";
|
||||
"lng_edit_channel_title" = "Edit channel";
|
||||
"lng_edit_bot_title" = "Edit bot";
|
||||
@@ -5067,6 +5009,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_payments_webview_no_use" = "Unfortunately, you can't use payments with current system configuration.";
|
||||
"lng_payments_webview_install_edge" = "Please install {link}.";
|
||||
"lng_payments_webview_install_webkit" = "Please install WebKitGTK (webkit2gtk-4.1/webkit2gtk-4.0) using your package manager.";
|
||||
"lng_payments_webview_enable_opengl" = "Please enable OpenGL in application settings.";
|
||||
"lng_payments_webview_switch_x11" = "Unsupported display server. Please switch to X11.";
|
||||
"lng_payments_webview_update_windows" = "Please update your system to Windows 8.1 or later.";
|
||||
"lng_payments_sure_close" = "Are you sure you want to close this payment form? The changes you made will be lost.";
|
||||
"lng_payments_receipt_label" = "Receipt";
|
||||
@@ -5217,7 +5161,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_group_call_raised_hand_status" = "wants to speak";
|
||||
"lng_group_call_settings" = "Settings";
|
||||
"lng_group_call_video" = "Video";
|
||||
"lng_group_call_message" = "Message";
|
||||
"lng_group_call_screen_share_start" = "Share Screen";
|
||||
"lng_group_call_screen_share_stop" = "Stop Sharing";
|
||||
"lng_group_call_screen_title" = "Screen {index}";
|
||||
@@ -5279,7 +5222,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_group_call_invite_search_results" = "Search results";
|
||||
"lng_group_call_invite_limit" = "This is currently the maximum allowed number of participants.";
|
||||
"lng_group_call_new_muted" = "Mute new participants";
|
||||
"lng_group_call_enable_messages" = "Enable messages";
|
||||
"lng_group_call_speakers" = "Speakers";
|
||||
"lng_group_call_microphone" = "Microphone";
|
||||
"lng_group_call_push_to_talk" = "Push-to-Talk Shortcut";
|
||||
@@ -6233,7 +6175,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
|
||||
"lng_todo_title" = "Checklist";
|
||||
"lng_todo_title_group" = "Group Checklist";
|
||||
"lng_todo_title_user" = "Checklist";
|
||||
"lng_todo_completed#one" = "{count} of {total} completed";
|
||||
"lng_todo_completed#other" = "{count} of {total} completed";
|
||||
"lng_todo_completed_none" = "None of {total} completed";
|
||||
@@ -6501,10 +6442,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_ringtones_error_max_size" = "Sorry, but your file is too big. The maximum size for ringtones is {size}.";
|
||||
"lng_ringtones_error_max_duration" = "Sorry, but your file is too long. The maximum duration for ringtones is {duration}.";
|
||||
|
||||
"lng_bot_thread_edit" = "Edit Thread";
|
||||
"lng_bot_thread_title" = "Thread Name";
|
||||
"lng_bot_thread_choose_title_and_icon" = "Choose a thread name and icon";
|
||||
|
||||
"lng_forum_topic_new" = "New Topic";
|
||||
"lng_forum_topic_edit" = "Edit Topic";
|
||||
"lng_forum_topic_title" = "Topic Name";
|
||||
@@ -7462,7 +7399,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"ayu_IDCopiedToast" = "ID copied to clipboard.";
|
||||
"ayu_ContextHideMessage" = "Hide";
|
||||
"ayu_ContextCopyCallbackData" = "Copy Callback Data";
|
||||
"ayu_RepeatMessage" = "Repeat Message";
|
||||
"ayu_RegisterURLScheme" = "Register URL Scheme";
|
||||
"ayu_SessionTerminated" = "Session **{item}** was terminated. You may still browse cached messages.";
|
||||
"ayu_LocalPremiumNotice" = "You're using **local** Telegram Premium.\nIt **won't** give you any benefits.\n**Enjoy the star near your nickname!**";
|
||||
|
||||
@@ -1,28 +1,56 @@
|
||||
<RCC>
|
||||
<qresource prefix="/gui">
|
||||
<file alias="art/ayu/alt/app.svg">../../art/ayu/alt/app.svg</file>
|
||||
<file alias="art/ayu/alt/app.png">../../art/ayu/alt/app.png</file>
|
||||
<file alias="art/ayu/alt/app_preview.png">../../art/ayu/alt/app_preview.png</file>
|
||||
<file alias="art/ayu/alt/app_macos.png">../../art/ayu/alt/app_macos.png</file>
|
||||
<file alias="art/ayu/alt/app_icon.ico">../../art/ayu/alt/app_icon.ico</file>
|
||||
<file alias="art/ayu/bard/app.svg">../../art/ayu/bard/app.svg</file>
|
||||
<file alias="art/ayu/bard/app.png">../../art/ayu/bard/app.png</file>
|
||||
<file alias="art/ayu/bard/app_preview.png">../../art/ayu/bard/app_preview.png</file>
|
||||
<file alias="art/ayu/bard/app_macos.png">../../art/ayu/bard/app_macos.png</file>
|
||||
<file alias="art/ayu/bard/app_icon.ico">../../art/ayu/bard/app_icon.ico</file>
|
||||
<file alias="art/ayu/chibi/app.png">../../art/ayu/chibi/app.png</file>
|
||||
<file alias="art/ayu/chibi/app_preview.png">../../art/ayu/chibi/app_preview.png</file>
|
||||
<file alias="art/ayu/chibi/app_macos.png">../../art/ayu/chibi/app_macos.png</file>
|
||||
<file alias="art/ayu/chibi/app_icon.ico">../../art/ayu/chibi/app_icon.ico</file>
|
||||
<file alias="art/ayu/chibi2/app.png">../../art/ayu/chibi2/app.png</file>
|
||||
<file alias="art/ayu/chibi2/app_preview.png">../../art/ayu/chibi2/app_preview.png</file>
|
||||
<file alias="art/ayu/chibi2/app_macos.png">../../art/ayu/chibi2/app_macos.png</file>
|
||||
<file alias="art/ayu/chibi2/app_icon.ico">../../art/ayu/chibi2/app_icon.ico</file>
|
||||
<file alias="art/ayu/default/app.svg">../../art/ayu/default/app.svg</file>
|
||||
<file alias="art/ayu/default/app.png">../../art/ayu/default/app.png</file>
|
||||
<file alias="art/ayu/default/app_preview.png">../../art/ayu/default/app_preview.png</file>
|
||||
<file alias="art/ayu/default/app_macos.png">../../art/ayu/default/app_macos.png</file>
|
||||
<file alias="art/ayu/default/app_icon.ico">../../art/ayu/default/app_icon.ico</file>
|
||||
<file alias="art/ayu/discord/app.svg">../../art/ayu/discord/app.svg</file>
|
||||
<file alias="art/ayu/discord/app.png">../../art/ayu/discord/app.png</file>
|
||||
<file alias="art/ayu/discord/app_preview.png">../../art/ayu/discord/app_preview.png</file>
|
||||
<file alias="art/ayu/discord/app_macos.png">../../art/ayu/discord/app_macos.png</file>
|
||||
<file alias="art/ayu/discord/app_icon.ico">../../art/ayu/discord/app_icon.ico</file>
|
||||
<file alias="art/ayu/extera/app.svg">../../art/ayu/extera/app.svg</file>
|
||||
<file alias="art/ayu/extera/app.png">../../art/ayu/extera/app.png</file>
|
||||
<file alias="art/ayu/extera/app_preview.png">../../art/ayu/extera/app_preview.png</file>
|
||||
<file alias="art/ayu/extera/app_macos.png">../../art/ayu/extera/app_macos.png</file>
|
||||
<file alias="art/ayu/extera/app_icon.ico">../../art/ayu/extera/app_icon.ico</file>
|
||||
<file alias="art/ayu/extera2/app.svg">../../art/ayu/extera2/app.svg</file>
|
||||
<file alias="art/ayu/extera2/app.png">../../art/ayu/extera2/app.png</file>
|
||||
<file alias="art/ayu/extera2/app_preview.png">../../art/ayu/extera2/app_preview.png</file>
|
||||
<file alias="art/ayu/extera2/app_macos.png">../../art/ayu/extera2/app_macos.png</file>
|
||||
<file alias="art/ayu/extera2/app_icon.ico">../../art/ayu/extera2/app_icon.ico</file>
|
||||
<file alias="art/ayu/nothing/app.svg">../../art/ayu/nothing/app.svg</file>
|
||||
<file alias="art/ayu/macos/app.png">../../art/ayu/macos/app.png</file>
|
||||
<file alias="art/ayu/macos/app_preview.png">../../art/ayu/macos/app_preview.png</file>
|
||||
<file alias="art/ayu/macos/app_macos.png">../../art/ayu/macos/app_macos.png</file>
|
||||
<file alias="art/ayu/macos/app_icon.ico">../../art/ayu/macos/app_icon.ico</file>
|
||||
<file alias="art/ayu/nothing/app.png">../../art/ayu/nothing/app.png</file>
|
||||
<file alias="art/ayu/nothing/app_preview.png">../../art/ayu/nothing/app_preview.png</file>
|
||||
<file alias="art/ayu/nothing/app_macos.png">../../art/ayu/nothing/app_macos.png</file>
|
||||
<file alias="art/ayu/nothing/app_icon.ico">../../art/ayu/nothing/app_icon.ico</file>
|
||||
<file alias="art/ayu/spotify/app.svg">../../art/ayu/spotify/app.svg</file>
|
||||
<file alias="art/ayu/spotify/app.png">../../art/ayu/spotify/app.png</file>
|
||||
<file alias="art/ayu/spotify/app_preview.png">../../art/ayu/spotify/app_preview.png</file>
|
||||
<file alias="art/ayu/spotify/app_macos.png">../../art/ayu/spotify/app_macos.png</file>
|
||||
<file alias="art/ayu/spotify/app_icon.ico">../../art/ayu/spotify/app_icon.ico</file>
|
||||
<file alias="art/ayu/win95/app.png">../../art/ayu/win95/app.png</file>
|
||||
<file alias="art/ayu/win95/app_preview.png">../../art/ayu/win95/app_preview.png</file>
|
||||
<file alias="art/ayu/win95/app_macos.png">../../art/ayu/win95/app_macos.png</file>
|
||||
<file alias="art/ayu/win95/app_icon.ico">../../art/ayu/win95/app_icon.ico</file>
|
||||
<file alias="art/ayu/yaplus/app.svg">../../art/ayu/yaplus/app.svg</file>
|
||||
<file alias="art/ayu/yaplus/app.png">../../art/ayu/yaplus/app.png</file>
|
||||
<file alias="art/ayu/yaplus/app_preview.png">../../art/ayu/yaplus/app_preview.png</file>
|
||||
<file alias="art/ayu/yaplus/app_macos.png">../../art/ayu/yaplus/app_macos.png</file>
|
||||
<file alias="art/ayu/yaplus/app_icon.ico">../../art/ayu/yaplus/app_icon.ico</file>
|
||||
<file alias="icons/ayu/nocover.svg">../../icons/ayu/nocover.svg</file>
|
||||
<file alias="icons/ayu/donates/boosty.svg">../../icons/ayu/donates/boosty.svg</file>
|
||||
|
||||
@@ -40,11 +40,6 @@
|
||||
<file alias="direct_messages.tgs">../../animations/edit_peers/direct_messages.tgs</file>
|
||||
<file alias="no_chats.tgs">../../animations/no_chats.tgs</file>
|
||||
<file alias="transcribe_loading.tgs">../../animations/transcribe_loading.tgs</file>
|
||||
<file alias="cake.tgs">../../animations/cake.tgs</file>
|
||||
<file alias="camera_outline.tgs">../../animations/camera_outline.tgs</file>
|
||||
<file alias="photo_suggest_icon.tgs">../../animations/photo_suggest_icon.tgs</file>
|
||||
<file alias="toast/saved_messages.tgs">../../animations/toast/saved_messages.tgs</file>
|
||||
<file alias="toast/tagged.tgs">../../animations/toast/tagged.tgs</file>
|
||||
|
||||
<file alias="dice_idle.tgs">../../animations/dice/dice_idle.tgs</file>
|
||||
<file alias="dart_idle.tgs">../../animations/dice/dart_idle.tgs</file>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<Identity Name="TelegramMessengerLLP.TelegramDesktop"
|
||||
ProcessorArchitecture="ARCHITECTURE"
|
||||
Publisher="CN=536BC709-8EE1-4478-AF22-F0F0F26FF64A"
|
||||
Version="6.2.4.0" />
|
||||
Version="6.1.3.0" />
|
||||
<Properties>
|
||||
<DisplayName>Telegram Desktop</DisplayName>
|
||||
<PublisherDisplayName>Telegram Messenger LLP</PublisherDisplayName>
|
||||
|
||||
@@ -44,8 +44,8 @@ IDI_ICON1 ICON "..\\art\\icon256.ico"
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 6,2,4,0
|
||||
PRODUCTVERSION 6,2,4,0
|
||||
FILEVERSION 6,1,3,0
|
||||
PRODUCTVERSION 6,1,3,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
@@ -62,10 +62,10 @@ BEGIN
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Radolyn Labs"
|
||||
VALUE "FileDescription", "AyuGram Desktop"
|
||||
VALUE "FileVersion", "6.2.4.0"
|
||||
VALUE "FileVersion", "6.1.3.0"
|
||||
VALUE "LegalCopyright", "Copyright (C) 2014-2025"
|
||||
VALUE "ProductName", "AyuGram Desktop"
|
||||
VALUE "ProductVersion", "6.2.4.0"
|
||||
VALUE "ProductVersion", "6.1.3.0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
||||
@@ -35,8 +35,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 6,2,4,0
|
||||
PRODUCTVERSION 6,2,4,0
|
||||
FILEVERSION 6,1,3,0
|
||||
PRODUCTVERSION 6,1,3,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
@@ -53,10 +53,10 @@ BEGIN
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Radolyn Labs"
|
||||
VALUE "FileDescription", "AyuGram Desktop Updater"
|
||||
VALUE "FileVersion", "6.2.4.0"
|
||||
VALUE "FileVersion", "6.1.3.0"
|
||||
VALUE "LegalCopyright", "Copyright (C) 2014-2025"
|
||||
VALUE "ProductName", "AyuGram Desktop"
|
||||
VALUE "ProductVersion", "6.2.4.0"
|
||||
VALUE "ProductVersion", "6.1.3.0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
||||
@@ -98,7 +98,7 @@ Authorizations::Authorizations(not_null<ApiWrap*> api)
|
||||
api->session().saveSettingsDelayed();
|
||||
}) {
|
||||
_unreviewed = api->session().settings().unreviewed();
|
||||
crl::on_main(&api->session(), [=] { removeExpiredUnreviewed(); });
|
||||
removeExpiredUnreviewed();
|
||||
Core::App().settings().deviceModelChanges(
|
||||
) | rpl::start_with_next([=](const QString &model) {
|
||||
auto changed = false;
|
||||
|
||||
@@ -159,7 +159,6 @@ void MessagesSearch::searchReceived(
|
||||
// Don't apply cached data!
|
||||
owner.processUsers(data.vusers());
|
||||
owner.processChats(data.vchats());
|
||||
_history->peer->processTopics(data.vtopics());
|
||||
}
|
||||
auto items = HistoryItemsFromTL(&owner, data.vmessages().v);
|
||||
const auto total = int(data.vmessages().v.size());
|
||||
@@ -169,7 +168,6 @@ void MessagesSearch::searchReceived(
|
||||
// Don't apply cached data!
|
||||
owner.processUsers(data.vusers());
|
||||
owner.processChats(data.vchats());
|
||||
_history->peer->processTopics(data.vtopics());
|
||||
}
|
||||
auto items = HistoryItemsFromTL(&owner, data.vmessages().v);
|
||||
// data.vnext_rate() is used only in global search.
|
||||
@@ -180,14 +178,17 @@ void MessagesSearch::searchReceived(
|
||||
// Don't apply cached data!
|
||||
owner.processUsers(data.vusers());
|
||||
owner.processChats(data.vchats());
|
||||
if (const auto channel = _history->peer->asChannel()) {
|
||||
channel->ptsReceived(data.vpts().v);
|
||||
} else {
|
||||
LOG(("API Error: "
|
||||
"received messages.channelMessages when no channel "
|
||||
"was passed!"));
|
||||
}
|
||||
if (const auto channel = _history->peer->asChannel()) {
|
||||
channel->ptsReceived(data.vpts().v);
|
||||
if (_requestId != 0) {
|
||||
// Don't apply cached data!
|
||||
channel->processTopics(data.vtopics());
|
||||
}
|
||||
_history->peer->processTopics(data.vtopics());
|
||||
} else {
|
||||
LOG(("API Error: "
|
||||
"received messages.channelMessages when no channel "
|
||||
"was passed!"));
|
||||
}
|
||||
auto items = HistoryItemsFromTL(&owner, data.vmessages().v);
|
||||
const auto total = int(data.vcount().v);
|
||||
|
||||
@@ -27,6 +27,13 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
|
||||
|
||||
namespace Api {
|
||||
namespace {
|
||||
|
||||
[[nodiscard]] TimeId UnixtimeFromMsgId(mtpMsgId msgId) {
|
||||
return TimeId(msgId >> 32);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
Polls::Polls(not_null<ApiWrap*> api)
|
||||
: _session(&api->session())
|
||||
|
||||
@@ -23,7 +23,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "main/main_app_config.h"
|
||||
#include "main/main_session.h"
|
||||
#include "payments/payments_form.h"
|
||||
#include "ui/chat/chat_style.h" // ColorCollectible
|
||||
#include "ui/text/format_values.h"
|
||||
|
||||
namespace Api {
|
||||
@@ -866,7 +865,6 @@ std::optional<Data::StarGift> FromTL(
|
||||
.lastSaleDate = data.vlast_sale_date().value_or_empty(),
|
||||
.lockedUntilDate = data.vlocked_until_date().value_or_empty(),
|
||||
.requirePremium = data.is_require_premium(),
|
||||
.peerColorAvailable = data.is_peer_color_available(),
|
||||
.upgradable = data.vupgrade_stars().has_value(),
|
||||
.birthday = data.is_birthday(),
|
||||
.soldOut = data.is_sold_out(),
|
||||
@@ -902,12 +900,6 @@ std::optional<Data::StarGift> FromTL(
|
||||
const auto themeUser = themeUserId
|
||||
? session->data().peer(themeUserId).get()
|
||||
: nullptr;
|
||||
const auto colorCollectible = (data.vpeer_color()
|
||||
&& data.vpeer_color()->type() == mtpc_peerColorCollectible)
|
||||
? std::make_shared<Ui::ColorCollectible>(
|
||||
Data::ParseColorCollectible(
|
||||
data.vpeer_color()->c_peerColorCollectible()))
|
||||
: nullptr;
|
||||
auto result = Data::StarGift{
|
||||
.id = data.vid().v,
|
||||
.unique = std::make_shared<Data::UniqueGift>(Data::UniqueGift{
|
||||
@@ -915,15 +907,11 @@ std::optional<Data::StarGift> FromTL(
|
||||
.initialGiftId = data.vgift_id().v,
|
||||
.slug = qs(data.vslug()),
|
||||
.title = qs(data.vtitle()),
|
||||
.giftAddress = qs(data.vgift_address().value_or_empty()),
|
||||
.ownerAddress = qs(data.vowner_address().value_or_empty()),
|
||||
.ownerName = qs(data.vowner_name().value_or_empty()),
|
||||
.ownerId = (data.vowner_id()
|
||||
? peerFromMTP(*data.vowner_id())
|
||||
: PeerId()),
|
||||
.hostId = (data.vhost_id()
|
||||
? peerFromMTP(*data.vhost_id())
|
||||
: PeerId()),
|
||||
.releasedBy = releasedBy,
|
||||
.themeUser = themeUser,
|
||||
.nanoTonForResale = FindTonForResale(data.vresell_amount()),
|
||||
@@ -942,7 +930,6 @@ std::optional<Data::StarGift> FromTL(
|
||||
data.vvalue_amount().value_or_empty()),
|
||||
})
|
||||
: nullptr),
|
||||
.peerColor = colorCollectible,
|
||||
}),
|
||||
.document = model->document,
|
||||
.releasedBy = releasedBy,
|
||||
@@ -999,8 +986,6 @@ std::optional<Data::SavedStarGift> FromTL(
|
||||
.starsConverted = int64(data.vconvert_stars().value_or_empty()),
|
||||
.starsUpgradedBySender = int64(
|
||||
data.vupgrade_stars().value_or_empty()),
|
||||
.starsForDetailsRemove = int64(
|
||||
data.vdrop_original_details_stars().value_or_empty()),
|
||||
.giftPrepayUpgradeHash = qs(
|
||||
data.vprepaid_upgrade_hash().value_or_empty()),
|
||||
.fromId = (data.vfrom_id()
|
||||
|
||||
@@ -25,6 +25,10 @@ namespace {
|
||||
|
||||
constexpr auto kSendTogglesDelay = 3 * crl::time(1000);
|
||||
|
||||
[[nodiscard]] TimeId UnixtimeFromMsgId(mtpMsgId msgId) {
|
||||
return TimeId(msgId >> 32);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
TodoLists::TodoLists(not_null<ApiWrap*> api)
|
||||
|
||||
@@ -51,7 +51,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "history/history.h"
|
||||
#include "history/history_item.h"
|
||||
#include "history/history_item_helpers.h"
|
||||
#include "history/history_streamed_drafts.h"
|
||||
#include "history/history_unread_things.h"
|
||||
#include "core/application.h"
|
||||
#include "storage/storage_account.h"
|
||||
@@ -1105,9 +1104,6 @@ void Updates::handleSendActionUpdate(
|
||||
const auto from = (fromId == session().userPeerId())
|
||||
? session().user().get()
|
||||
: session().data().peerLoaded(fromId);
|
||||
const auto when = requestingDifference()
|
||||
? 0
|
||||
: base::unixtime::now();
|
||||
if (action.type() == mtpc_speakingInGroupCallAction) {
|
||||
handleSpeakingInCall(peer, fromId, from);
|
||||
}
|
||||
@@ -1120,11 +1116,10 @@ void Updates::handleSendActionUpdate(
|
||||
const auto &data = action.c_sendMessageEmojiInteractionSeen();
|
||||
handleEmojiInteraction(peer, qs(data.vemoticon()));
|
||||
return;
|
||||
} else if (action.type() == mtpc_sendMessageTextDraftAction) {
|
||||
const auto &data = action.c_sendMessageTextDraftAction();
|
||||
history->streamedDrafts().apply(rootId, fromId, when, data);
|
||||
return;
|
||||
}
|
||||
const auto when = requestingDifference()
|
||||
? 0
|
||||
: base::unixtime::now();
|
||||
session().data().sendActionManager().registerFor(
|
||||
history,
|
||||
rootId,
|
||||
@@ -1635,17 +1630,6 @@ void Updates::feedUpdate(const MTPUpdate &update) {
|
||||
auto &d = update.c_updateNewChannelMessage();
|
||||
auto channel = session().data().channelLoaded(peerToChannel(PeerFromMessage(d.vmessage())));
|
||||
const auto isDataLoaded = AllDataLoadedForMessage(&session(), d.vmessage());
|
||||
{
|
||||
// Todo delete.
|
||||
const auto messageId = IdFromMessage(d.vmessage());
|
||||
if (const auto history = channel ? session().data().historyLoaded(channel) : nullptr) {
|
||||
if (history->isUnknownMessageDeleted(messageId)) {
|
||||
LOG(("Unknown message deleted detected for channel %1, message %2")
|
||||
.arg(channel->id.value & PeerId::kChatTypeMask)
|
||||
.arg(messageId.bare));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!requestingDifference() && (!channel || isDataLoaded != DataIsLoadedResult::Ok)) {
|
||||
MTP_LOG(0, ("getDifference "
|
||||
"{ good - after not all data loaded in updateNewChannelMessage }%1"
|
||||
@@ -1975,7 +1959,7 @@ void Updates::feedUpdate(const MTPUpdate &update) {
|
||||
auto &d = update.c_updateUserTyping();
|
||||
handleSendActionUpdate(
|
||||
peerFromUser(d.vuser_id()),
|
||||
d.vtop_msg_id().value_or_empty(),
|
||||
0,
|
||||
peerFromUser(d.vuser_id()),
|
||||
d.vaction());
|
||||
} break;
|
||||
@@ -2147,9 +2131,7 @@ void Updates::feedUpdate(const MTPUpdate &update) {
|
||||
case mtpc_updateGroupCallParticipants:
|
||||
case mtpc_updateGroupCallChainBlocks:
|
||||
case mtpc_updateGroupCallConnection:
|
||||
case mtpc_updateGroupCall:
|
||||
case mtpc_updateGroupCallMessage:
|
||||
case mtpc_updateGroupCallEncryptedMessage: {
|
||||
case mtpc_updateGroupCall: {
|
||||
Core::App().calls().handleUpdate(&session(), update);
|
||||
} break;
|
||||
|
||||
@@ -2510,9 +2492,9 @@ void Updates::feedUpdate(const MTPUpdate &update) {
|
||||
}
|
||||
} break;
|
||||
|
||||
case mtpc_updatePinnedForumTopic: {
|
||||
const auto &d = update.c_updatePinnedForumTopic();
|
||||
const auto peerId = peerFromMTP(d.vpeer());
|
||||
case mtpc_updateChannelPinnedTopic: {
|
||||
const auto &d = update.c_updateChannelPinnedTopic();
|
||||
const auto peerId = peerFromChannel(d.vchannel_id());
|
||||
if (const auto peer = session().data().peerLoaded(peerId)) {
|
||||
const auto rootId = d.vtopic_id().v;
|
||||
if (const auto topic = peer->forumTopicFor(rootId)) {
|
||||
@@ -2523,9 +2505,9 @@ void Updates::feedUpdate(const MTPUpdate &update) {
|
||||
}
|
||||
} break;
|
||||
|
||||
case mtpc_updatePinnedForumTopics: {
|
||||
const auto &d = update.c_updatePinnedForumTopics();
|
||||
const auto peerId = peerFromMTP(d.vpeer());
|
||||
case mtpc_updateChannelPinnedTopics: {
|
||||
const auto &d = update.c_updateChannelPinnedTopics();
|
||||
const auto peerId = peerFromChannel(d.vchannel_id());
|
||||
if (const auto peer = session().data().peerLoaded(peerId)) {
|
||||
if (const auto forum = peer->forum()) {
|
||||
const auto done = [&] {
|
||||
|
||||
@@ -134,7 +134,7 @@ rpl::producer<rpl::no_value, Usernames::Error> Usernames::toggle(
|
||||
if (list.empty()) {
|
||||
if (error == Error::Unknown) {
|
||||
it->second.done.fire_done();
|
||||
} else {
|
||||
} else if (error == Error::TooMuch) {
|
||||
it->second.done.fire_error_copy(error);
|
||||
}
|
||||
_toggleRequests.remove(peerId);
|
||||
@@ -149,8 +149,6 @@ rpl::producer<rpl::no_value, Usernames::Error> Usernames::toggle(
|
||||
const auto type = error.type();
|
||||
if (type == u"USERNAMES_ACTIVE_TOO_MUCH"_q) {
|
||||
pop(Error::TooMuch);
|
||||
} else if (type.startsWith(u"FLOOD_WAIT_"_q)) {
|
||||
pop(Error::Flood);
|
||||
} else {
|
||||
pop(Error::Unknown);
|
||||
}
|
||||
@@ -160,19 +158,19 @@ rpl::producer<rpl::no_value, Usernames::Error> Usernames::toggle(
|
||||
_api.request(MTPaccount_ToggleUsername(
|
||||
MTP_string(username),
|
||||
MTP_bool(active)
|
||||
)).done(done).fail(fail).handleFloodErrors().send();
|
||||
)).done(done).fail(fail).send();
|
||||
} else if (const auto channel = peer->asChannel()) {
|
||||
_api.request(MTPchannels_ToggleUsername(
|
||||
channel->inputChannel,
|
||||
MTP_string(username),
|
||||
MTP_bool(active)
|
||||
)).done(done).fail(fail).handleFloodErrors().send();
|
||||
)).done(done).fail(fail).send();
|
||||
} else if (const auto botUserInput = BotUserInput(peer)) {
|
||||
_api.request(MTPbots_ToggleUsername(
|
||||
*botUserInput,
|
||||
MTP_string(username),
|
||||
MTP_bool(active)
|
||||
)).done(done).fail(fail).handleFloodErrors().send();
|
||||
)).done(done).fail(fail).send();
|
||||
} else {
|
||||
return rpl::never<rpl::no_value, Error>();
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@ class Usernames final {
|
||||
public:
|
||||
enum class Error {
|
||||
TooMuch,
|
||||
Flood,
|
||||
Unknown,
|
||||
};
|
||||
|
||||
|
||||
@@ -114,6 +114,10 @@ using PhotoFileLocationId = Data::PhotoFileLocationId;
|
||||
using DocumentFileLocationId = Data::DocumentFileLocationId;
|
||||
using UpdatedFileReferences = Data::UpdatedFileReferences;
|
||||
|
||||
[[nodiscard]] TimeId UnixtimeFromMsgId(mtpMsgId msgId) {
|
||||
return TimeId(msgId >> 32);
|
||||
}
|
||||
|
||||
[[nodiscard]] std::shared_ptr<ChatHelpers::Show> ShowForPeer(
|
||||
not_null<PeerData*> peer) {
|
||||
if (const auto window = Core::App().windowFor(peer)) {
|
||||
@@ -158,14 +162,6 @@ void ShowChannelsLimitBox(not_null<PeerData*> peer) {
|
||||
|
||||
} // namespace
|
||||
|
||||
namespace Api {
|
||||
|
||||
TimeId UnixtimeFromMsgId(mtpMsgId msgId) {
|
||||
return TimeId(msgId >> 32);
|
||||
}
|
||||
|
||||
} // namespace Api
|
||||
|
||||
ApiWrap::ApiWrap(not_null<Main::Session*> session)
|
||||
: MTP::Sender(&session->account().mtp())
|
||||
, _session(session)
|
||||
@@ -216,27 +212,6 @@ ApiWrap::ApiWrap(not_null<Main::Session*> session)
|
||||
|
||||
ApiWrap::~ApiWrap() = default;
|
||||
|
||||
void ApiWrap::ProcessRecentSelfForwards(
|
||||
not_null<Main::Session*> session,
|
||||
const MTPUpdates &updates,
|
||||
PeerId targetPeerId,
|
||||
PeerId fromPeerId) {
|
||||
auto newIds = MessageIdsList();
|
||||
updates.match([&](const MTPDupdates &data) {
|
||||
for (const auto &update : data.vupdates().v) {
|
||||
update.match([&](const MTPDupdateMessageID &d) {
|
||||
newIds.push_back(FullMsgId(targetPeerId, d.vid().v));
|
||||
}, [](const auto &) {});
|
||||
}
|
||||
}, [](const auto &) {});
|
||||
if (!newIds.empty()) {
|
||||
session->data().addRecentSelfForwards({
|
||||
.fromPeerId = fromPeerId,
|
||||
.ids = newIds,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Main::Session &ApiWrap::session() const {
|
||||
return *_session;
|
||||
}
|
||||
@@ -407,9 +382,9 @@ void ApiWrap::savePinnedOrder(not_null<Data::Forum*> forum) {
|
||||
order,
|
||||
ranges::back_inserter(topics),
|
||||
input);
|
||||
request(MTPmessages_ReorderPinnedForumTopics(
|
||||
MTP_flags(MTPmessages_ReorderPinnedForumTopics::Flag::f_force),
|
||||
forum->peer()->input,
|
||||
request(MTPchannels_ReorderPinnedForumTopics(
|
||||
MTP_flags(MTPchannels_ReorderPinnedForumTopics::Flag::f_force),
|
||||
forum->channel()->inputChannel,
|
||||
MTP_vector(topics)
|
||||
)).done([=](const MTPUpdates &result) {
|
||||
applyUpdates(result);
|
||||
@@ -1132,8 +1107,6 @@ void ApiWrap::requestWallPaper(
|
||||
void ApiWrap::requestFullPeer(not_null<PeerData*> peer) {
|
||||
if (_fullPeerRequests.contains(peer)) {
|
||||
return;
|
||||
} else if (!peer->isUser() && !peer->barSettings().has_value()) {
|
||||
requestPeerSettings(peer);
|
||||
}
|
||||
|
||||
const auto requestId = [&] {
|
||||
@@ -1953,7 +1926,7 @@ void ApiWrap::sendNotifySettingsUpdates() {
|
||||
for (const auto topic : base::take(_updateNotifyTopics)) {
|
||||
request(MTPaccount_UpdateNotifySettings(
|
||||
MTP_inputNotifyForumTopic(
|
||||
topic->peer()->input,
|
||||
topic->channel()->input,
|
||||
MTP_int(topic->rootId())),
|
||||
topic->notify().serialize()
|
||||
)).afterDelay(kSmallDelayMs).send();
|
||||
@@ -2246,7 +2219,7 @@ void ApiWrap::saveDraftsToCloud() {
|
||||
history->finishSavingCloudDraft(
|
||||
topicRootId,
|
||||
monoforumPeerId,
|
||||
Api::UnixtimeFromMsgId(response.outerMsgId));
|
||||
UnixtimeFromMsgId(response.outerMsgId));
|
||||
const auto cloudDraft = history->cloudDraft(
|
||||
topicRootId,
|
||||
monoforumPeerId);
|
||||
@@ -2267,7 +2240,7 @@ void ApiWrap::saveDraftsToCloud() {
|
||||
history->finishSavingCloudDraft(
|
||||
topicRootId,
|
||||
monoforumPeerId,
|
||||
Api::UnixtimeFromMsgId(response.outerMsgId));
|
||||
UnixtimeFromMsgId(response.outerMsgId));
|
||||
const auto cloudDraft = history->cloudDraft(
|
||||
topicRootId,
|
||||
monoforumPeerId);
|
||||
@@ -3118,20 +3091,18 @@ void ApiWrap::requestMessageAfterDate(
|
||||
return &messages.vmessages().v;
|
||||
};
|
||||
const auto list = result.match([&](
|
||||
const MTPDmessages_messages &data) {
|
||||
peer->processTopics(data.vtopics());
|
||||
const MTPDmessages_messages &data) {
|
||||
return handleMessages(data);
|
||||
}, [&](const MTPDmessages_messagesSlice &data) {
|
||||
peer->processTopics(data.vtopics());
|
||||
return handleMessages(data);
|
||||
}, [&](const MTPDmessages_channelMessages &data) {
|
||||
if (const auto channel = peer->asChannel()) {
|
||||
channel->ptsReceived(data.vpts().v);
|
||||
channel->processTopics(data.vtopics());
|
||||
} else {
|
||||
LOG(("API Error: received messages.channelMessages when "
|
||||
"no channel was passed! (ApiWrap::jumpToDate)"));
|
||||
}
|
||||
peer->processTopics(data.vtopics());
|
||||
return handleMessages(data);
|
||||
}, [&](const MTPDmessages_messagesNotModified &) {
|
||||
LOG(("API Error: received messages.messagesNotModified! "
|
||||
@@ -3606,13 +3577,6 @@ void ApiWrap::forwardMessages(
|
||||
}
|
||||
|
||||
finish();
|
||||
if (peer->isSelf() && session().premium()) {
|
||||
ProcessRecentSelfForwards(
|
||||
_session,
|
||||
result,
|
||||
peer->id,
|
||||
forwardFrom->id);
|
||||
}
|
||||
}).fail([=](const MTP::Error &error) {
|
||||
if (idsCopy) {
|
||||
for (const auto &[randomId, itemId] : *idsCopy) {
|
||||
@@ -3988,9 +3952,7 @@ void ApiWrap::sendShortcutMessages(
|
||||
}).send();
|
||||
}
|
||||
|
||||
void ApiWrap::sendMessage(
|
||||
MessageToSend &&message,
|
||||
std::optional<MsgId> localMessageId) {
|
||||
void ApiWrap::sendMessage(MessageToSend &&message) {
|
||||
const auto history = message.action.history;
|
||||
const auto peer = history->peer;
|
||||
auto &textWithTags = message.textWithTags;
|
||||
@@ -4016,7 +3978,7 @@ void ApiWrap::sendMessage(
|
||||
? Data::CanSendTexts(topic)
|
||||
: Data::CanSendTexts(peer);
|
||||
|
||||
if ((!canSendTexts && !AyuForward::isForwarding(peer->id)) || Api::SendDice(message)) {
|
||||
if (!canSendTexts && !AyuForward::isForwarding(peer->id) || Api::SendDice(message)) {
|
||||
return;
|
||||
}
|
||||
local().saveRecentSentHashtags(textWithTags.text);
|
||||
@@ -4044,9 +4006,7 @@ void ApiWrap::sendMessage(
|
||||
|
||||
auto newId = FullMsgId(
|
||||
peer->id,
|
||||
localMessageId
|
||||
? std::exchange(localMessageId, std::nullopt).value()
|
||||
: _session->data().nextLocalMessageId());
|
||||
_session->data().nextLocalMessageId());
|
||||
auto randomId = base::RandomValue<uint64>();
|
||||
|
||||
TextUtilities::Trim(sending);
|
||||
@@ -4172,7 +4132,7 @@ void ApiWrap::sendMessage(
|
||||
history->finishSavingCloudDraft(
|
||||
draftTopicRootId,
|
||||
draftMonoforumPeerId,
|
||||
Api::UnixtimeFromMsgId(response.outerMsgId));
|
||||
UnixtimeFromMsgId(response.outerMsgId));
|
||||
}
|
||||
|
||||
AyuWorker::markAsOnline(_session);
|
||||
@@ -4189,7 +4149,7 @@ void ApiWrap::sendMessage(
|
||||
history->finishSavingCloudDraft(
|
||||
draftTopicRootId,
|
||||
draftMonoforumPeerId,
|
||||
Api::UnixtimeFromMsgId(response.outerMsgId));
|
||||
UnixtimeFromMsgId(response.outerMsgId));
|
||||
}
|
||||
};
|
||||
const auto mtpShortcut = Data::ShortcutIdToMTP(
|
||||
@@ -4393,7 +4353,7 @@ void ApiWrap::sendInlineResult(
|
||||
history->finishSavingCloudDraft(
|
||||
topicRootId,
|
||||
monoforumPeerId,
|
||||
Api::UnixtimeFromMsgId(response.outerMsgId));
|
||||
UnixtimeFromMsgId(response.outerMsgId));
|
||||
if (done) {
|
||||
done(true);
|
||||
}
|
||||
@@ -4402,7 +4362,7 @@ void ApiWrap::sendInlineResult(
|
||||
history->finishSavingCloudDraft(
|
||||
topicRootId,
|
||||
monoforumPeerId,
|
||||
Api::UnixtimeFromMsgId(response.outerMsgId));
|
||||
UnixtimeFromMsgId(response.outerMsgId));
|
||||
if (done) {
|
||||
done(false);
|
||||
}
|
||||
|
||||
@@ -129,8 +129,6 @@ QString RequestKey(Types &&...values) {
|
||||
return result;
|
||||
}
|
||||
|
||||
[[nodiscard]] TimeId UnixtimeFromMsgId(mtpMsgId msgId);
|
||||
|
||||
} // namespace Api
|
||||
|
||||
class ApiWrap final : public MTP::Sender {
|
||||
@@ -365,9 +363,7 @@ public:
|
||||
void sendShortcutMessages(
|
||||
not_null<PeerData*> peer,
|
||||
BusinessShortcutId id);
|
||||
void sendMessage(
|
||||
MessageToSend &&message,
|
||||
std::optional<MsgId> localMessageId = std::nullopt);
|
||||
void sendMessage(MessageToSend &&message);
|
||||
void sendBotStart(
|
||||
std::shared_ptr<Ui::Show> show,
|
||||
not_null<UserData*> bot,
|
||||
@@ -432,12 +428,6 @@ public:
|
||||
|
||||
static constexpr auto kJoinErrorDuration = 5 * crl::time(1000);
|
||||
|
||||
static void ProcessRecentSelfForwards(
|
||||
not_null<Main::Session*> session,
|
||||
const MTPUpdates &updates,
|
||||
PeerId targetPeerId,
|
||||
PeerId fromPeerId);
|
||||
|
||||
[[nodiscard]] std::unique_ptr<TaskQueue> &fileLoader() {
|
||||
return _fileLoader;
|
||||
}
|
||||
|
||||
@@ -20,15 +20,6 @@ std::map<QString, QString> langMapping = {
|
||||
{"zh-hant-raw", "zh-hant"},
|
||||
};
|
||||
|
||||
constexpr auto postfixes = {
|
||||
"zero",
|
||||
"one",
|
||||
"two",
|
||||
"few",
|
||||
"many",
|
||||
"other"
|
||||
};
|
||||
|
||||
AyuLanguage *AyuLanguage::instance = nullptr;
|
||||
|
||||
AyuLanguage::AyuLanguage() = default;
|
||||
@@ -118,19 +109,14 @@ void AyuLanguage::applyLanguageJson(QJsonDocument doc) {
|
||||
auto key = qsl("ayu_") + brokenKey;
|
||||
auto val = json.value(brokenKey).toString().replace(qsl("&"), qsl("&"));
|
||||
|
||||
if (key.endsWith("_Android")) {
|
||||
if (key.endsWith("_zero") || key.endsWith("_two") || key.endsWith("_few") || key.endsWith("_many")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (const auto &postfix : postfixes) {
|
||||
if (key.endsWith(qsl("_") + postfix)) {
|
||||
key = key.replace(qsl("_") + postfix, qsl("#") + postfix);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (key.endsWith("_PC")) {
|
||||
key = key.replace("_PC", "");
|
||||
if (key.endsWith("_one")) {
|
||||
key = key.replace("_one", "#one");
|
||||
} else if (key.endsWith("_other")) {
|
||||
key = key.replace("_other", "#other");
|
||||
}
|
||||
|
||||
if (val.contains(qsl("%1$d")) && !val.contains(qsl("%2$d"))) {
|
||||
|
||||
@@ -144,10 +144,6 @@ void postinitialize() {
|
||||
translationProviderReactive = settings->translationProvider;
|
||||
|
||||
ghostModeEnabled = ghostModeEnabled_util(settings.value());
|
||||
|
||||
if (settings->appIcon == QString("macos")) {
|
||||
settings->appIcon = AyuAssets::DEFAULT_ICON;
|
||||
}
|
||||
}
|
||||
|
||||
AyuGramSettings &getInstance() {
|
||||
@@ -256,7 +252,13 @@ AyuGramSettings::AyuGramSettings() {
|
||||
showGroupReactions = true;
|
||||
|
||||
// ~ Customization
|
||||
appIcon = AyuAssets::DEFAULT_ICON;
|
||||
appIcon =
|
||||
#ifdef Q_OS_MAC
|
||||
AyuAssets::DEFAULT_MACOS_ICON
|
||||
#else
|
||||
AyuAssets::DEFAULT_ICON
|
||||
#endif
|
||||
;
|
||||
simpleQuotesAndReplies = false;
|
||||
hideFastShare = false;
|
||||
replaceBottomInfoWithIcons = true;
|
||||
@@ -273,7 +275,6 @@ AyuGramSettings::AyuGramSettings() {
|
||||
showHideMessageInContextMenu = 0;
|
||||
showUserMessagesInContextMenu = 2;
|
||||
showMessageDetailsInContextMenu = 2;
|
||||
showRepeatMessageInContextMenu = 0;
|
||||
showAddFilterInContextMenu = 1;
|
||||
|
||||
showAttachButtonInMessageField = true;
|
||||
@@ -526,10 +527,6 @@ void set_showMessageDetailsInContextMenu(int val) {
|
||||
settings->showMessageDetailsInContextMenu = val;
|
||||
}
|
||||
|
||||
void set_showRepeatMessageInContextMenu(int val) {
|
||||
settings->showRepeatMessageInContextMenu = val;
|
||||
}
|
||||
|
||||
void set_showAddFilterInContextMenu(int val) {
|
||||
settings->showAddFilterInContextMenu = val;
|
||||
}
|
||||
|
||||
@@ -99,7 +99,6 @@ public:
|
||||
int showHideMessageInContextMenu;
|
||||
int showUserMessagesInContextMenu;
|
||||
int showMessageDetailsInContextMenu;
|
||||
int showRepeatMessageInContextMenu;
|
||||
int showAddFilterInContextMenu;
|
||||
|
||||
bool showAttachButtonInMessageField;
|
||||
@@ -206,7 +205,6 @@ void set_showViewsPanelInContextMenu(int val);
|
||||
void set_showHideMessageInContextMenu(int val);
|
||||
void set_showUserMessagesInContextMenu(int val);
|
||||
void set_showMessageDetailsInContextMenu(int val);
|
||||
void set_showRepeatMessageInContextMenu(int val);
|
||||
void set_showAddFilterInContextMenu(int val);
|
||||
|
||||
void set_showAttachButtonInMessageField(bool val);
|
||||
@@ -299,7 +297,6 @@ inline void to_json(nlohmann::json &nlohmann_json_j, const AyuGramSettings &nloh
|
||||
NLOHMANN_JSON_TO(showHideMessageInContextMenu)
|
||||
NLOHMANN_JSON_TO(showUserMessagesInContextMenu)
|
||||
NLOHMANN_JSON_TO(showMessageDetailsInContextMenu)
|
||||
NLOHMANN_JSON_TO(showRepeatMessageInContextMenu)
|
||||
NLOHMANN_JSON_TO(showAddFilterInContextMenu)
|
||||
NLOHMANN_JSON_TO(showAttachButtonInMessageField)
|
||||
NLOHMANN_JSON_TO(showCommandsButtonInMessageField)
|
||||
@@ -384,7 +381,6 @@ inline void from_json(const nlohmann::json &nlohmann_json_j, AyuGramSettings &nl
|
||||
NLOHMANN_JSON_FROM_WITH_DEFAULT(showHideMessageInContextMenu)
|
||||
NLOHMANN_JSON_FROM_WITH_DEFAULT(showUserMessagesInContextMenu)
|
||||
NLOHMANN_JSON_FROM_WITH_DEFAULT(showMessageDetailsInContextMenu)
|
||||
NLOHMANN_JSON_FROM_WITH_DEFAULT(showRepeatMessageInContextMenu)
|
||||
NLOHMANN_JSON_FROM_WITH_DEFAULT(showAddFilterInContextMenu)
|
||||
NLOHMANN_JSON_FROM_WITH_DEFAULT(showAttachButtonInMessageField)
|
||||
NLOHMANN_JSON_FROM_WITH_DEFAULT(showCommandsButtonInMessageField)
|
||||
|
||||
@@ -80,7 +80,7 @@ bool ResolveChat(
|
||||
}
|
||||
const auto peer = controller->session().data().peerLoaded(static_cast<PeerId>(chatId));
|
||||
if (peer != nullptr) {
|
||||
controller->showPeerHistory(peer);
|
||||
controller->showPeerInfo(peer);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ bool ResolveChat(
|
||||
[=](const QString &title, PeerData *data)
|
||||
{
|
||||
if (data) {
|
||||
controller->showPeerHistory(data);
|
||||
controller->showPeerInfo(data);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ std::optional<bool> isFiltered(const QString &str, uint64 dialogId) {
|
||||
|
||||
const auto reversed = pattern.reversed;
|
||||
|
||||
if ((!reversed && match) || (reversed && !match)) {
|
||||
if (!reversed && match || reversed && !match) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -89,7 +89,7 @@ std::optional<bool> isFiltered(const QString &str, uint64 dialogId) {
|
||||
|
||||
bool isEnabled(not_null<PeerData*> peer) {
|
||||
const auto &settings = AyuSettings::getInstance();
|
||||
return settings.filtersEnabled && (settings.filtersEnabledInChats || (!peer->isMegagroup() && !peer->isGigagroup() && !peer->isUser()));
|
||||
return settings.filtersEnabled && (settings.filtersEnabledInChats || !peer->isMegagroup() && !peer->isGigagroup());
|
||||
}
|
||||
|
||||
bool isBlocked(const not_null<HistoryItem*> item) {
|
||||
@@ -115,8 +115,8 @@ bool isBlocked(const not_null<HistoryItem*> item) {
|
||||
|
||||
return settings.filtersEnabled &&
|
||||
(
|
||||
(item->from()->isUser() && ShadowBanUtils::isShadowBanned(getDialogIdFromPeer(item->from()))) ||
|
||||
(settings.hideFromBlocked && blocked)
|
||||
item->from()->isUser() && ShadowBanUtils::isShadowBanned(getDialogIdFromPeer(item->from())) ||
|
||||
settings.hideFromBlocked && blocked
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -145,8 +145,7 @@ bool FilterUtils::importFromJson(const QByteArray &json) {
|
||||
const auto changes = prepareChanges(document.object());
|
||||
|
||||
if (changes == ApplyChanges{}) {
|
||||
Ui::Toast::Show(tr::ayu_FiltersToastFailNoChanges(tr::now));
|
||||
LOG(("FilterUtils: received empty changes"));
|
||||
Ui::Toast::Show(tr::ayu_FiltersToastFailImport(tr::now));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -279,7 +278,7 @@ int typeOfMessage(const HistoryItem *item) {
|
||||
if (media->giveawayResults()) {
|
||||
return 28; // TYPE_GIVEAWAY_RESULTS
|
||||
}
|
||||
if (dynamic_cast<Data::MediaDice*>(media)) {
|
||||
if (const auto dice = dynamic_cast<Data::MediaDice*>(media)) {
|
||||
return 15; // TYPE_ANIMATED_STICKER
|
||||
}
|
||||
if (media->photo()) {
|
||||
|
||||
@@ -26,7 +26,7 @@ struct ApplyChanges
|
||||
|
||||
std::map<long long, QString> peersToBeResolved;
|
||||
|
||||
bool operator==(const ApplyChanges&) const = default;
|
||||
auto operator<=>(const ApplyChanges&) const = default;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ bool isForwarding(const PeerId &id) {
|
||||
return state.state != ForwardState::State::Finished
|
||||
&& state.currentChunk < state.totalChunks
|
||||
&& !state.stopRequested
|
||||
&& ((state.totalChunks && state.totalMessages) || state.state == ForwardState::State::Downloading);
|
||||
&& (state.totalChunks && state.totalMessages || state.state == ForwardState::State::Downloading);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -399,9 +399,9 @@ void forwardMessages(
|
||||
auto &file = preparedMedia.files[j];
|
||||
|
||||
QFile f(file.path);
|
||||
if (
|
||||
(groupMedia[j]->photo() && f.size() < groupMedia[j]->photo()->imageByteSize(Data::PhotoSize::Large)) ||
|
||||
(groupMedia[j]->document() && f.size() < groupMedia[j]->document()->size)
|
||||
if (groupMedia[j]->photo() && f.size() < groupMedia[j]->photo()->imageByteSize(Data::PhotoSize::Large)
|
||||
||
|
||||
groupMedia[j]->document() && f.size() < groupMedia[j]->document()->size
|
||||
) {
|
||||
preparedMedia.files.erase(preparedMedia.files.begin() + j);
|
||||
}
|
||||
|
||||
@@ -21,6 +21,37 @@
|
||||
#include "storage/file_download_mtproto.h"
|
||||
#include "storage/localimageloader.h"
|
||||
|
||||
class TimedCountDownLatch
|
||||
{
|
||||
public:
|
||||
explicit TimedCountDownLatch(int count)
|
||||
: count_(count) {
|
||||
}
|
||||
|
||||
void countDown() {
|
||||
std::unique_lock lock(mutex_);
|
||||
if (count_ > 0) {
|
||||
count_--;
|
||||
}
|
||||
if (count_ == 0) {
|
||||
cv_.notify_all();
|
||||
}
|
||||
}
|
||||
|
||||
bool await(std::chrono::milliseconds timeout) {
|
||||
std::unique_lock lock(mutex_);
|
||||
if (count_ == 0) {
|
||||
return true;
|
||||
}
|
||||
return cv_.wait_for(lock, timeout, [this] { return count_ == 0; });
|
||||
}
|
||||
|
||||
private:
|
||||
std::mutex mutex_;
|
||||
std::condition_variable cv_;
|
||||
int count_;
|
||||
};
|
||||
|
||||
namespace AyuSync {
|
||||
|
||||
QString pathForSave(not_null<Main::Session*> session) {
|
||||
@@ -55,6 +86,7 @@ QString filePath(not_null<Main::Session*> session, const Data::Media *media) {
|
||||
QString::number(document->id) + ".mp4";
|
||||
}
|
||||
|
||||
|
||||
// media without any file name
|
||||
if (document->isGifv()) {
|
||||
return pathForSave(session) + "gif_" + QString::number(document->getDC()) + "_" +
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace Ayu::Translator {
|
||||
|
||||
TranslateManager::Builder::Builder(
|
||||
TranslateManager &manager,
|
||||
Main::Session *session,
|
||||
Main::Session &session,
|
||||
const MTPflags<MTPmessages_translateText::Flags> &flags,
|
||||
const MTPInputPeer &peer,
|
||||
const MTPVector<MTPint> &id,
|
||||
@@ -35,7 +35,7 @@ TranslateManager::Builder::Builder(
|
||||
const MTPstring &to_lang
|
||||
)
|
||||
: _manager(&manager)
|
||||
, _session(session)
|
||||
, _session(&session)
|
||||
, _flags(flags)
|
||||
, _peer(peer)
|
||||
, _idList(id)
|
||||
@@ -43,12 +43,12 @@ TranslateManager::Builder::Builder(
|
||||
, _toLang(to_lang) {
|
||||
}
|
||||
|
||||
TranslateManager::Builder &TranslateManager::Builder::done(std::function<void(const Result &)> cb) {
|
||||
TranslateManager::Builder &TranslateManager::Builder::done(std::function < void(const Result &) > cb) {
|
||||
_done = std::move(cb);
|
||||
return *this;
|
||||
}
|
||||
|
||||
TranslateManager::Builder &TranslateManager::Builder::fail(std::function<void(const MTP::Error &)> cb) {
|
||||
TranslateManager::Builder &TranslateManager::Builder::fail(std::function < void(const MTP::Error &) > cb) {
|
||||
_fail = std::move(cb);
|
||||
return *this;
|
||||
}
|
||||
@@ -73,7 +73,7 @@ void TranslateManager::Builder::cancel() {
|
||||
}
|
||||
|
||||
TranslateManager::Builder TranslateManager::request(
|
||||
Main::Session *session,
|
||||
Main::Session &session,
|
||||
const MTPflags<MTPmessages_translateText::Flags> &flags,
|
||||
const MTPInputPeer &peer,
|
||||
const MTPVector<MTPint> &id,
|
||||
@@ -242,8 +242,7 @@ bool TranslateManager::cancel(mtpRequestId requestId) {
|
||||
if (it->second.cancel) {
|
||||
it->second.cancel();
|
||||
}
|
||||
// already erased by `triggerFail`
|
||||
// _pending.erase(it);
|
||||
_pending.erase(it);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -330,4 +329,4 @@ void TranslateManager::removeLeastRecentlyUsed() {
|
||||
_cacheList.pop_back();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@ public:
|
||||
public:
|
||||
Builder(
|
||||
TranslateManager &manager,
|
||||
Main::Session *session,
|
||||
Main::Session &session,
|
||||
const MTPflags<MTPmessages_translateText::Flags> &flags,
|
||||
const MTPInputPeer &peer,
|
||||
const MTPVector<MTPint> &id,
|
||||
@@ -52,7 +52,7 @@ public:
|
||||
mtpRequestId send();
|
||||
void cancel();
|
||||
|
||||
[[nodiscard]] auto *session() const { return _session; }
|
||||
[[nodiscard]] const auto &session() const { return _session; }
|
||||
[[nodiscard]] const auto &flags() const { return _flags; }
|
||||
[[nodiscard]] const auto &peer() const { return _peer; }
|
||||
[[nodiscard]] const auto &ids() const { return _idList; }
|
||||
@@ -61,7 +61,7 @@ public:
|
||||
|
||||
private:
|
||||
TranslateManager *_manager = nullptr;
|
||||
Main::Session* _session;
|
||||
not_null<Main::Session*> _session;
|
||||
mtpRequestId _id = 0;
|
||||
|
||||
MTPflags<MTPmessages_translateText::Flags> _flags;
|
||||
@@ -80,7 +80,7 @@ public:
|
||||
~TranslateManager() = default;
|
||||
|
||||
Builder request(
|
||||
Main::Session *session,
|
||||
Main::Session &session,
|
||||
const MTPflags<MTPmessages_translateText::Flags> &flags,
|
||||
const MTPInputPeer &peer,
|
||||
const MTPVector<MTPint> &id,
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
// but be respectful and credit the original author.
|
||||
//
|
||||
// Copyright @Radolyn, 2025
|
||||
#pragma once
|
||||
|
||||
#include <QtCore/QJsonArray>
|
||||
#include <QtCore/QJsonDocument>
|
||||
#include <QtCore/QJsonObject>
|
||||
|
||||
@@ -8,60 +8,17 @@
|
||||
|
||||
#include <memory>
|
||||
#include <QtCore/QJsonArray>
|
||||
#include <QtCore/QJsonDocument>
|
||||
#include <QtCore/QJsonObject>
|
||||
#include <QtCore/QJsonValue>
|
||||
#include <QtCore/QPointer>
|
||||
#include <QtCore/QStringList>
|
||||
#include <QtCore/QTimer>
|
||||
#include <QtNetwork/QNetworkRequest>
|
||||
#include <QtNetwork/QNetworkReply>
|
||||
#include <QtCore/QUrl>
|
||||
#include <QtGui/QTextDocument>
|
||||
#include <QtCore/QUrlQuery>
|
||||
|
||||
#include "ayu/features/translator/html_parser.h"
|
||||
|
||||
namespace Ayu::Translator {
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr auto kGoogleTranslateUrl = "https://translate-pa.googleapis.com/v1/translateHtml";
|
||||
constexpr auto kGoogleContentType = "application/json+protobuf";
|
||||
constexpr auto kGoogleDefaultApiKey = "AIzaSyATBXajvzQLTDHEQbcpq0Ihe0vWDHmO520";
|
||||
|
||||
QString decodeHtmlEntities(const QString &text) {
|
||||
QTextDocument doc;
|
||||
doc.setHtml(text);
|
||||
return doc.toPlainText();
|
||||
}
|
||||
|
||||
QStringList collectStrings(const QJsonValue &value) {
|
||||
QStringList result;
|
||||
if (value.isString()) {
|
||||
result.push_back(value.toString());
|
||||
return result;
|
||||
}
|
||||
if (value.isArray()) {
|
||||
const auto arr = value.toArray();
|
||||
for (const auto &item : arr) {
|
||||
result.append(collectStrings(item));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
if (value.isObject()) {
|
||||
const auto obj = value.toObject();
|
||||
if (obj.contains(QStringLiteral("text"))) {
|
||||
result.append(collectStrings(obj.value(QStringLiteral("text"))));
|
||||
}
|
||||
if (obj.contains(QStringLiteral("trans"))) {
|
||||
result.append(collectStrings(obj.value(QStringLiteral("trans"))));
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
GoogleTranslator &GoogleTranslator::instance() {
|
||||
static GoogleTranslator inst;
|
||||
return inst;
|
||||
@@ -88,29 +45,24 @@ QPointer<QNetworkReply> GoogleTranslator::startSingleTranslation(
|
||||
const auto from = fromLang.trimmed().isEmpty() ? QStringLiteral("auto") : fromLang.trimmed();
|
||||
const auto to = toLang.trimmed();
|
||||
|
||||
auto textToTranslate = text.text;
|
||||
textToTranslate = textToTranslate.replace(qsl("\n"), qsl("<br>"));
|
||||
QUrl url(QStringLiteral("https://translate.googleapis.com/translate_a/single"));
|
||||
QUrlQuery query;
|
||||
query.addQueryItem(QStringLiteral("dj"), QStringLiteral("1"));
|
||||
query.addQueryItem(QStringLiteral("q"), shouldWrapInHtml() ? Html::entitiesToHtml(text) : text.text);
|
||||
query.addQueryItem(QStringLiteral("sl"), from);
|
||||
query.addQueryItem(QStringLiteral("tl"), to);
|
||||
query.addQueryItem(QStringLiteral("ie"), QStringLiteral("UTF-8"));
|
||||
query.addQueryItem(QStringLiteral("oe"), QStringLiteral("UTF-8"));
|
||||
query.addQueryItem(QStringLiteral("client"), QStringLiteral("at"));
|
||||
query.addQueryItem(QStringLiteral("dt"), QStringLiteral("t"));
|
||||
query.addQueryItem(QStringLiteral("otf"), QStringLiteral("2"));
|
||||
url.setQuery(query);
|
||||
|
||||
const auto preparedText = textToTranslate;
|
||||
QJsonArray requestRoot;
|
||||
QJsonArray requestPayload;
|
||||
QJsonArray requestText;
|
||||
requestText.append(preparedText);
|
||||
requestPayload.append(requestText);
|
||||
requestPayload.append(from);
|
||||
requestPayload.append(to);
|
||||
requestRoot.append(requestPayload);
|
||||
requestRoot.append(QStringLiteral("wt_lib"));
|
||||
const auto body = QJsonDocument(requestRoot).toJson(QJsonDocument::Compact);
|
||||
|
||||
QNetworkRequest req(QUrl(QString::fromLatin1(kGoogleTranslateUrl)));
|
||||
QNetworkRequest req(url);
|
||||
const auto userAgent = randomDesktopUserAgent();
|
||||
req.setHeader(QNetworkRequest::UserAgentHeader, userAgent);
|
||||
req.setHeader(QNetworkRequest::ContentTypeHeader, QString::fromLatin1(kGoogleContentType));
|
||||
req.setRawHeader(QByteArrayLiteral("Accept"), QByteArrayLiteral("application/json"));
|
||||
req.setRawHeader(QByteArrayLiteral("X-Goog-Api-Key"), QByteArray(kGoogleDefaultApiKey));
|
||||
|
||||
QPointer<QNetworkReply> reply = _nam.post(req, body);
|
||||
QPointer<QNetworkReply> reply = _nam.get(req);
|
||||
|
||||
auto timer = new QTimer(reply);
|
||||
timer->setSingleShot(true);
|
||||
@@ -140,27 +92,15 @@ QPointer<QNetworkReply> GoogleTranslator::startSingleTranslation(
|
||||
return;
|
||||
}
|
||||
const auto body = reply->readAll();
|
||||
QJsonParseError parseError{};
|
||||
const auto doc = QJsonDocument::fromJson(body, &parseError);
|
||||
if (parseError.error != QJsonParseError::NoError || !doc.isArray()) {
|
||||
bool ok = false;
|
||||
const auto textOut = parseJsonPath(body, QStringLiteral("sentences"), &ok);
|
||||
if (!ok) {
|
||||
if (onFail) onFail();
|
||||
return;
|
||||
}
|
||||
const auto root = doc.array();
|
||||
if (root.isEmpty()) {
|
||||
if (onFail) onFail();
|
||||
return;
|
||||
}
|
||||
const auto translatedItems = collectStrings(root.at(0));
|
||||
const auto textOutCombined = translatedItems.join(QStringLiteral(" "));
|
||||
if (textOutCombined.trimmed().isEmpty()) {
|
||||
if (onFail) onFail();
|
||||
return;
|
||||
}
|
||||
const auto decodedText = decodeHtmlEntities(textOutCombined);
|
||||
if (onSuccess) onSuccess(shouldWrapInHtml()
|
||||
? Html::htmlToEntities(decodedText)
|
||||
: TextWithEntities{decodedText});
|
||||
? Html::htmlToEntities(textOut)
|
||||
: TextWithEntities{textOut});
|
||||
});
|
||||
|
||||
return reply;
|
||||
|
||||
@@ -5,16 +5,11 @@
|
||||
//
|
||||
// Copyright @Radolyn, 2025
|
||||
#include "ayu_logo.h"
|
||||
|
||||
#include <QSvgRenderer>
|
||||
|
||||
#include "ayu/ayu_settings.h"
|
||||
#include "styles/style_ayu_styles.h"
|
||||
#include "ui/rect.h"
|
||||
|
||||
static QString LAST_LOADED_NAME;
|
||||
static QImage LAST_LOADED;
|
||||
static QImage LAST_LOADED_PAD;
|
||||
static QImage LAST_LOADED_NO_MARGIN;
|
||||
|
||||
namespace AyuAssets {
|
||||
|
||||
@@ -34,69 +29,22 @@ void loadAppIco() {
|
||||
QFile::copy(qsl(":/gui/art/ayu/%1/app_icon.ico").arg(settings.appIcon), tempIconPath);
|
||||
}
|
||||
|
||||
QImage CreateImage(const QString &name, const QSize resultImageSize, const int padding = 0) {
|
||||
const auto iconSize = resultImageSize.shrunkBy(QMargins(padding, padding, padding, padding));
|
||||
|
||||
const auto pngPath = qsl(":/gui/art/ayu/%1/app.png").arg(name);
|
||||
if (QFile::exists(pngPath)) {
|
||||
const auto loaded = QImage(pngPath).scaled(iconSize, Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
||||
auto res = QImage(
|
||||
resultImageSize * style::DevicePixelRatio(),
|
||||
QImage::Format_ARGB32_Premultiplied);
|
||||
res.setDevicePixelRatio(style::DevicePixelRatio());
|
||||
res.fill(Qt::transparent);
|
||||
{
|
||||
auto p = QPainter(&res);
|
||||
p.drawImage(QRect(padding, padding, iconSize.width(), iconSize.height()), loaded);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
const auto svgPath = qsl(":/gui/art/ayu/%1/app.svg").arg(name);
|
||||
if (!QFile::exists(svgPath)) {
|
||||
return {};
|
||||
}
|
||||
|
||||
auto svg = QSvgRenderer(svgPath);
|
||||
auto image = QImage(
|
||||
resultImageSize * style::DevicePixelRatio(),
|
||||
QImage::Format_ARGB32_Premultiplied);
|
||||
image.setDevicePixelRatio(style::DevicePixelRatio());
|
||||
image.fill(Qt::transparent);
|
||||
{
|
||||
auto p = QPainter(&image);
|
||||
|
||||
QPainterPath path;
|
||||
path.addRoundedRect(
|
||||
QRect(padding, padding, iconSize.width(), iconSize.height()),
|
||||
iconSize.width() / 2.0f,
|
||||
iconSize.height() / 2.0f
|
||||
);
|
||||
|
||||
p.save();
|
||||
|
||||
p.setRenderHint(QPainter::Antialiasing, true);
|
||||
p.setClipPath(path);
|
||||
p.setRenderHint(QPainter::Antialiasing, false);
|
||||
|
||||
svg.render(&p, QRect(padding, padding, iconSize.width(), iconSize.height()));
|
||||
|
||||
p.restore();
|
||||
}
|
||||
return image;
|
||||
}
|
||||
|
||||
void loadIcons() {
|
||||
const auto &settings = AyuSettings::getInstance();
|
||||
if (LAST_LOADED_NAME != settings.appIcon) {
|
||||
LAST_LOADED_NAME = settings.appIcon;
|
||||
LAST_LOADED = CreateImage(settings.appIcon, Size(256));
|
||||
LAST_LOADED_PAD = CreateImage(settings.appIcon, Size(256), 12);
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
LAST_LOADED = QImage(qsl(":/gui/art/ayu/%1/app_macos.png").arg(settings.appIcon));
|
||||
#else
|
||||
LAST_LOADED = QImage(qsl(":/gui/art/ayu/%1/app.png").arg(settings.appIcon));
|
||||
#endif
|
||||
LAST_LOADED_NO_MARGIN = QImage(qsl(":/gui/art/ayu/%1/app_preview.png").arg(settings.appIcon));
|
||||
}
|
||||
}
|
||||
|
||||
QImage loadPreview(const QString &name) {
|
||||
return CreateImage(name, Size(st::cpIconSize), st::cpImagePadding);
|
||||
QImage loadPreview(const QString& name) {
|
||||
return QImage(qsl(":/gui/art/ayu/%1/app_preview.png").arg(name));
|
||||
}
|
||||
|
||||
QString currentAppLogoName() {
|
||||
@@ -108,9 +56,9 @@ QImage currentAppLogo() {
|
||||
return LAST_LOADED;
|
||||
}
|
||||
|
||||
QImage currentAppLogoPad() {
|
||||
QImage currentAppLogoNoMargin() {
|
||||
loadIcons();
|
||||
return LAST_LOADED_PAD;
|
||||
return LAST_LOADED_NO_MARGIN;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
namespace AyuAssets {
|
||||
|
||||
ICON(DEFAULT, "default");
|
||||
ICON(DEFAULT_MACOS, "macos");
|
||||
ICON(ALT, "alt");
|
||||
ICON(DISCORD, "discord");
|
||||
ICON(SPOTIFY, "spotify");
|
||||
@@ -29,6 +30,6 @@ QImage loadPreview(const QString& name);
|
||||
|
||||
QString currentAppLogoName();
|
||||
QImage currentAppLogo();
|
||||
QImage currentAppLogoPad();
|
||||
QImage currentAppLogoNoMargin();
|
||||
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ topBarRecentActions: IconButton {
|
||||
}
|
||||
|
||||
exteraBadgeToast: Toast(defaultToast) {
|
||||
minWidth: 40px;
|
||||
minWidth: msgMinWidth;
|
||||
maxWidth: 480px;
|
||||
padding: margins(54px, 13px, 19px, 12px);
|
||||
icon: icon {{ "ayu/extera_badge", toastFg }};
|
||||
|
||||
@@ -21,6 +21,9 @@
|
||||
#endif
|
||||
|
||||
const QVector<QString> icons{
|
||||
#ifdef Q_OS_MAC
|
||||
AyuAssets::DEFAULT_MACOS_ICON,
|
||||
#endif
|
||||
AyuAssets::DEFAULT_ICON,
|
||||
AyuAssets::ALT_ICON,
|
||||
AyuAssets::DISCORD_ICON,
|
||||
@@ -41,22 +44,19 @@ const auto rows = static_cast<int>(icons.size()) / 4 + std::min(1, static_cast<i
|
||||
void drawIcon(QPainter &p, const QImage &icon, int xOffset, int yOffset, float strokeOpacity) {
|
||||
xOffset += st::cpPadding;
|
||||
|
||||
{
|
||||
PainterHighQualityEnabler hq(p);
|
||||
p.save();
|
||||
p.setPen(QPen(st::boxDividerBg, 0));
|
||||
p.setBrush(QBrush(st::boxDividerBg));
|
||||
p.setOpacity(strokeOpacity);
|
||||
p.drawRoundedRect(
|
||||
xOffset + st::cpSelectedPadding,
|
||||
yOffset + st::cpSelectedPadding,
|
||||
st::cpIconSize + st::cpSelectedPadding * 2,
|
||||
st::cpIconSize + st::cpSelectedPadding * 2,
|
||||
st::cpSelectedRounding,
|
||||
st::cpSelectedRounding
|
||||
);
|
||||
p.restore();
|
||||
}
|
||||
p.save();
|
||||
p.setPen(QPen(st::boxDividerBg, 0));
|
||||
p.setBrush(QBrush(st::boxDividerBg));
|
||||
p.setOpacity(strokeOpacity);
|
||||
p.drawRoundedRect(
|
||||
xOffset + st::cpSelectedPadding,
|
||||
yOffset + st::cpSelectedPadding,
|
||||
st::cpIconSize + st::cpSelectedPadding * 2,
|
||||
st::cpIconSize + st::cpSelectedPadding * 2,
|
||||
st::cpSelectedRounding,
|
||||
st::cpSelectedRounding
|
||||
);
|
||||
p.restore();
|
||||
|
||||
const auto rect = QRect(
|
||||
xOffset + st::cpImagePadding,
|
||||
@@ -90,6 +90,7 @@ IconPicker::~IconPicker() {
|
||||
|
||||
void IconPicker::paintEvent(QPaintEvent *e) {
|
||||
Painter p(this);
|
||||
PainterHighQualityEnabler hq(p);
|
||||
|
||||
auto offset = st::boxWidth / 2 - (st::cpIconSize + st::cpSpacingX) * 2;
|
||||
|
||||
@@ -106,7 +107,11 @@ void IconPicker::paintEvent(QPaintEvent *e) {
|
||||
if (const auto cached = cachedIcons.find(iconName); cached != cachedIcons.end()) {
|
||||
icon = cached->second;
|
||||
} else {
|
||||
icon = cachedIcons[iconName] = AyuAssets::loadPreview(iconName);
|
||||
icon = cachedIcons[iconName] = AyuAssets::loadPreview(iconName).scaled(
|
||||
st::cpIconSize,
|
||||
st::cpIconSize,
|
||||
Qt::KeepAspectRatio,
|
||||
Qt::SmoothTransformation);
|
||||
}
|
||||
auto opacity = 0.0f;
|
||||
if (iconName == wasSelected) {
|
||||
|
||||