diff --git a/.github/stale.yml b/.github/stale.yml
new file mode 100644
index 000000000..afc525a07
--- /dev/null
+++ b/.github/stale.yml
@@ -0,0 +1,21 @@
+# Number of days of inactivity before an issue becomes stale
+daysUntilStale: 180
+# Number of days of inactivity before a stale issue is closed
+daysUntilClose: 30
+# Issues with these labels will never be considered stale
+exemptLabels: []
+# Label to use when marking an issue as stale
+staleLabel: stale
+# Comment to post when marking an issue as stale. Set to `false` to disable
+markComment: |
+ Hey there!
+
+ This issue was inactive for a long time and will be automatically closed in 30 days if there isn't any further activity. We therefore assume that the user has lost interest or resolved the problem on their own.
+
+ Don't worry though; if this is an error, let us know with a comment and we'll be happy to reopen the issue.
+
+ Thanks!
+# Comment to post when closing a stale issue. Set to `false` to disable
+closeComment: false
+# Process only issues
+only: issues
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
new file mode 100644
index 000000000..dc456da5c
--- /dev/null
+++ b/.github/workflows/docker.yml
@@ -0,0 +1,25 @@
+name: Docker.
+
+on:
+ push:
+ paths:
+ - '.github/workflows/docker.yml'
+ - 'Telegram/build/docker/centos_env/**'
+ pull_request:
+ paths:
+ - '.github/workflows/docker.yml'
+ - 'Telegram/build/docker/centos_env/**'
+
+jobs:
+ docker:
+ name: Ubuntu
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Clone.
+ uses: actions/checkout@v2
+ with:
+ submodules: recursive
+
+ - name: Docker image build.
+ run: docker build -t telegram_desktop Telegram/build/docker/centos_env
diff --git a/.github/workflows/issue_closer.yml b/.github/workflows/issue_closer.yml
index db58d86bd..44782fa45 100644
--- a/.github/workflows/issue_closer.yml
+++ b/.github/workflows/issue_closer.yml
@@ -12,7 +12,7 @@ jobs:
run: |
tag=$(git ls-remote --tags git://github.com/$GITHUB_REPOSITORY | cut -f 2 | tail -n1)
echo $tag
- echo ::set-env name=LATEST_TAG::$tag
+ echo "LATEST_TAG=$tag" >> $GITHUB_ENV
- name: Get the latest macOS version.
shell: python
@@ -28,7 +28,7 @@ jobs:
ver = itemlist[0].attributes['sparkle:shortVersionString'].value;
print(ver);
- subprocess.check_call("echo ::set-env name=%s::%s" % ("LATEST_MACOS", ver), shell=True);
+ open(os.environ['GITHUB_ENV'], "a").write("LATEST_MACOS=" + ver);
- name: Check a version from an issue.
uses: actions/github-script@0.4.0
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
index 2877e804a..b9cc4e0bd 100644
--- a/.github/workflows/linux.yml
+++ b/.github/workflows/linux.yml
@@ -78,7 +78,7 @@ jobs:
steps:
- name: Get repository name.
- run: echo ::set-env name=REPO_NAME::${GITHUB_REPOSITORY##*/}
+ run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
- name: Disable man for further package installs.
run: |
@@ -136,11 +136,11 @@ jobs:
echo `md5sum $thisFile | cut -c -32` >> CACHE_KEY.txt
fi
md5cache=$(md5sum CACHE_KEY.txt | cut -c -32)
- echo ::set-env name=CACHE_KEY::$md5cache
+ echo "CACHE_KEY=$md5cache" >> $GITHUB_ENV
mkdir -p Libraries
cd Libraries
- echo ::set-env name=LibrariesPath::`pwd`
+ echo "LibrariesPath=`pwd`" >> $GITHUB_ENV
- name: Patches.
run: |
@@ -164,6 +164,22 @@ jobs:
cmake --version
+ - name: MozJPEG.
+ run: |
+ cd $LibrariesPath
+
+ git clone -b v4.0.1-rc2 $GIT/mozilla/mozjpeg.git
+ cd mozjpeg
+ cmake -B build . \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr/local \
+ -DWITH_JPEG8=ON \
+ -DPNG_SUPPORTED=OFF
+ cmake --build build -j$(nproc)
+ sudo cmake --install build
+ cd ..
+ rm -rf mozjpeg
+
- name: Opus cache.
id: cache-opus
uses: actions/cache@v2
@@ -189,7 +205,7 @@ jobs:
run: |
cd $LibrariesPath
- git clone $GIT/01org/libva.git
+ git clone $GIT/intel/libva.git
cd libva
./autogen.sh --enable-static
make -j$(nproc)
@@ -446,7 +462,6 @@ jobs:
-confirm-license \
-qt-zlib \
-qt-libpng \
- -qt-libjpeg \
-qt-harfbuzz \
-qt-pcre \
-qt-xcb \
@@ -538,7 +553,7 @@ jobs:
cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Debug \
-DTG_OWT_SPECIAL_TARGET=linux \
- -DTG_OWT_LIBJPEG_INCLUDE_PATH=`pwd`/../../../qt_$QT/qtbase/src/3rdparty/libjpeg \
+ -DTG_OWT_LIBJPEG_INCLUDE_PATH=/usr/local/include \
-DTG_OWT_OPENSSL_INCLUDE_PATH=$OPENSSL_PREFIX/include \
-DTG_OWT_OPUS_INCLUDE_PATH=/usr/local/include/opus \
-DTG_OWT_FFMPEG_INCLUDE_PATH=/usr/local/include \
@@ -563,9 +578,9 @@ jobs:
if [ -n "${{ matrix.defines }}" ]; then
DEFINE="-D ${{ matrix.defines }}=ON"
echo Define from matrix: $DEFINE
- echo ::set-env name=ARTIFACT_NAME::Kotatogram_${{ matrix.defines }}
+ echo "ARTIFACT_NAME=Kotatogram_${{ matrix.defines }}" >> $GITHUB_ENV
else
- echo ::set-env name=ARTIFACT_NAME::Kotatogram
+ echo "ARTIFACT_NAME=Kotatogram" >> $GITHUB_ENV
fi
./configure.sh \
diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml
index f1afd2e4f..b74ae209c 100644
--- a/.github/workflows/mac.yml
+++ b/.github/workflows/mac.yml
@@ -76,7 +76,7 @@ jobs:
steps:
- name: Get repository name.
- run: echo ::set-env name=REPO_NAME::${GITHUB_REPOSITORY##*/}
+ run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
- name: Clone.
uses: actions/checkout@v2
@@ -101,13 +101,13 @@ jobs:
thisFile=$REPO_NAME/.github/workflows/mac.yml
echo `md5 -q $thisFile` >> CACHE_KEY.txt
fi
- echo ::set-env name=CACHE_KEY::`md5 -q CACHE_KEY.txt`
+ echo "CACHE_KEY=`md5 -q CACHE_KEY.txt`" >> $GITHUB_ENV
- echo ::add-path::$PWD/Libraries/depot_tools
+ echo "$PWD/Libraries/depot_tools" >> $GITHUB_PATH
mkdir -p Libraries/macos
cd Libraries/macos
- echo ::set-env name=LibrariesPath::`pwd`
+ echo "LibrariesPath=`pwd`" >> $GITHUB_ENV
- name: Patches.
run: |
@@ -139,6 +139,20 @@ jobs:
make -j$(nproc)
sudo make install
+ - name: MozJPEG.
+ run: |
+ cd $LibrariesPath
+
+ git clone -b v4.0.1-rc2 $GIT/mozilla/mozjpeg.git
+ cd mozjpeg
+ cmake -B build . \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr/local/macos \
+ -DWITH_JPEG8=ON \
+ -DPNG_SUPPORTED=OFF
+ cmake --build build -j$(nproc)
+ sudo cmake --install build
+
- name: OpenSSL cache.
id: cache-openssl
uses: actions/cache@v2
@@ -176,17 +190,14 @@ jobs:
with:
path: ${{ env.LibrariesPath }}/opus-cache
key: ${{ runner.OS }}-opus-${{ env.CACHE_KEY }}
- - name: Opus clone.
- run: |
- cd $LibrariesPath
-
- git clone -b v1.3 --depth=1 $GIT/xiph/opus
- - name: Opus build.
+ - name: Opus.
if: steps.cache-opus.outputs.cache-hit != 'true'
run: |
cd $LibrariesPath
+ git clone $GIT/xiph/opus
cd opus
+ git checkout v1.3
./autogen.sh
CFLAGS="$MIN_MAC $UNGUARDED" CPPFLAGS="$MIN_MAC $UNGUARDED" LDFLAGS="$MIN_MAC" ./configure --prefix=$PREFIX
make -j$(nproc)
@@ -453,7 +464,10 @@ jobs:
-securetransport \
-nomake examples \
-nomake tests \
- -platform macx-clang
+ -platform macx-clang \
+ -I "/usr/local/macos/include" \
+ LIBJPEG_LIBS="/usr/local/macos/lib/libjpeg.a" \
+ ZLIB_LIBS="/usr/local/macos/lib/libz.a"
make -j$(nproc)
sudo make install
@@ -477,7 +491,7 @@ jobs:
cd tg_owt/out/Debug
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug \
-DTG_OWT_SPECIAL_TARGET=mac \
- -DTG_OWT_LIBJPEG_INCLUDE_PATH=`pwd`/../../../qt_$QT/qtbase/src/3rdparty/libjpeg \
+ -DTG_OWT_LIBJPEG_INCLUDE_PATH=/usr/local/macos/include \
-DTG_OWT_OPENSSL_INCLUDE_PATH=`pwd`/../../../openssl_$OPENSSL_VER/include \
-DTG_OWT_OPUS_INCLUDE_PATH=$PREFIX/include/opus \
-DTG_OWT_FFMPEG_INCLUDE_PATH=/usr/local/include \
@@ -500,9 +514,9 @@ jobs:
if [ -n "${{ matrix.defines }}" ]; then
DEFINE="-D ${{ matrix.defines }}=ON"
echo Define from matrix: $DEFINE
- echo ::set-env name=ARTIFACT_NAME::Kotatogram_${{ matrix.defines }}
+ echo "ARTIFACT_NAME=Kotatogram_${{ matrix.defines }}" >> $GITHUB_ENV
else
- echo ::set-env name=ARTIFACT_NAME::Kotatogram
+ echo "ARTIFACT_NAME=Kotatogram" >> $GITHUB_ENV
fi
./configure.sh \
diff --git a/.github/workflows/snap.yml b/.github/workflows/snap.yml
index 20f42540b..044ee2887 100644
--- a/.github/workflows/snap.yml
+++ b/.github/workflows/snap.yml
@@ -83,7 +83,7 @@ jobs:
if: env.UPLOAD_ARTIFACT == 'true'
run: |
artifact_name=$(echo kotatogram-desktop_*.snap)
- echo ::set-env name=ARTIFACT_NAME::$artifact_name
+ echo "ARTIFACT_NAME=$artifact_name" >> $GITHUB_ENV
mkdir artifact
mv $artifact_name artifact
diff --git a/.github/workflows/user_agent_updater.yml b/.github/workflows/user_agent_updater.yml
new file mode 100644
index 000000000..eee5c8b2c
--- /dev/null
+++ b/.github/workflows/user_agent_updater.yml
@@ -0,0 +1,154 @@
+name: User-agent updater.
+
+on:
+ repository_dispatch:
+ types: ["Restart user_agent_updater workflow."]
+ schedule:
+ # At 00:00 on day-of-month 1.
+ - cron: '0 0 1 * *'
+ pull_request_target:
+ types: [closed]
+
+jobs:
+ User-agent:
+ runs-on: ubuntu-latest
+
+ env:
+ codeFile: "Telegram/SourceFiles/mtproto/details/mtproto_domain_resolver.cpp"
+ headBranchPrefix: "chrome_"
+ baseBranch: "dev"
+ isPull: "0"
+
+ steps:
+ - name: Set env.
+ if: startsWith(github.event_name, 'pull_request')
+ run: |
+ echo "isPull=1" >> $GITHUB_ENV
+
+ - name: Clone.
+ uses: actions/checkout@v2
+
+ - name: Set up git.
+ run: |
+ token=${{ secrets.TOKEN_FOR_MASTER_UPDATER }}
+ if [ -z "${token}" ]; then
+ echo "Token is unset. Nothing to do."
+ exit 1
+ fi
+
+ url=https://x-access-token:$token@github.com/$GITHUB_REPOSITORY
+
+ git config --global user.email "action@github.com"
+ git config --global user.name "GitHub Action"
+
+ git remote set-url origin $url
+
+ - name: Delete branch.
+ if: |
+ env.isPull == '1'
+ && github.event.action == 'closed'
+ && startsWith(github.head_ref, env.headBranchPrefix)
+ run: |
+ git push origin --delete ${{ github.head_ref }}
+
+ - name: Write a new version of Google Chrome to the user-agent for DNS.
+ if: env.isPull == '0'
+ shell: python
+ run: |
+ import subprocess, os, re;
+
+ regExpVersion = "[0-9]+.[0-9]+.[0-9]+.[0-9]+";
+ chrome = "Chrome/";
+
+ def newVersion():
+ output = subprocess.check_output(["google-chrome", "--version"]);
+ version = re.search(regExpVersion, output);
+ if not version:
+ print("Can't find a Chrome version.");
+ exit();
+ return version.group(0);
+
+ newChromeVersion = newVersion();
+ print(newChromeVersion);
+
+ def setEnv(value):
+ open(os.environ['GITHUB_ENV'], "a").write(value);
+
+ def writeUserAgent():
+ p = os.environ['codeFile'];
+ w = open(p, "r");
+ content = w.read();
+ w.close();
+
+ regExpChrome = chrome + regExpVersion;
+
+ version = re.search(regExpChrome, content);
+ if not version:
+ print("Can't find an user-agent in the code.");
+ exit();
+ content = re.sub(regExpChrome, chrome + newChromeVersion, content);
+
+ w = open(p, "w");
+ w.write(content);
+
+ setEnv("ChromeVersion=" + newChromeVersion);
+
+ writeUserAgent();
+
+ - name: Push to a new branch.
+ if: env.isPull == '0' && env.ChromeVersion != ''
+ run: |
+ git diff > git_diff.txt
+ if [[ ! -s git_diff.txt ]]; then
+ echo "Nothing to commit."
+ exit 0
+ fi
+
+ git checkout -b $headBranchPrefix$ChromeVersion
+ git add $codeFile
+ git commit -m "Update User-Agent for DNS to Chrome $ChromeVersion."
+
+ git push origin $headBranchPrefix$ChromeVersion
+ echo "Done!"
+
+ - name: Close previous pull requests.
+ if: env.isPull == '0' && env.ChromeVersion != ''
+ uses: actions/github-script@0.4.0
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ script: |
+ const common = {
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ };
+
+ github.pulls.list(common).then(response => {
+ response.data.forEach((item, _) => {
+ if (item.head.ref.startsWith(process.env.headBranchPrefix)) {
+ console.log(`Close ${item.title} #${item.number}.`);
+ github.pulls.update({
+ pull_number: item.number,
+ state: "closed",
+ ...common
+ });
+ }
+ });
+ });
+
+ - name: Create a new pull request.
+ if: env.isPull == '0' && env.ChromeVersion != ''
+ uses: actions/github-script@0.4.0
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ script: |
+ const version = process.env.ChromeVersion;
+ const title = `Update User-Agent for DNS to Chrome ${version}.`;
+
+ github.pulls.create({
+ title: title,
+ body: "",
+ head: `${process.env.headBranchPrefix}${version}`,
+ base: process.env.baseBranch,
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ });
diff --git a/.github/workflows/win.yml b/.github/workflows/win.yml
index 02f691592..519ed4194 100644
--- a/.github/workflows/win.yml
+++ b/.github/workflows/win.yml
@@ -75,10 +75,31 @@ jobs:
DOC_PATH: "docs/building-msvc.md"
AUTO_CACHING: "1"
+ defaults:
+ run:
+ shell: cmd
+
steps:
- name: Get repository name.
shell: bash
- run: echo ::set-env name=REPO_NAME::${GITHUB_REPOSITORY##*/}
+ run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
+
+ - name: Set up environment paths.
+ shell: bash
+ run: |
+ echo "C:\\Strawberry\\perl\\bin\\" >> $GITHUB_PATH
+ echo "C:\\Program Files\\NASM\\" >> $GITHUB_PATH
+ echo "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\VC\\Auxiliary\\Build\\" >> $GITHUB_PATH
+
+ mkdir Libraries && cd Libraries
+ echo "Convert unix path to win path."
+ p=`pwd | sed 's#^/[d]#d:#g' |sed 's#/#\\\\#g'`
+ echo "LibrariesPath=$p" >> $GITHUB_ENV
+
+ - name: Save msbuild version.
+ run: |
+ call vcvars32.bat
+ msbuild -version > CACHE_KEY.txt
- name: Clone.
uses: actions/checkout@v2
@@ -86,38 +107,18 @@ jobs:
submodules: recursive
path: ${{ env.REPO_NAME }}
- - name: Set up environment variables.
- shell: cmd
- run: |
- echo ::add-path::C:\Strawberry\perl\bin\
- echo ::add-path::"%programfiles%\NASM"
-
- C:
- cd "%programfiles(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\"
- echo ::add-path::%cd%
-
- call vcvars32.bat
- D:
- cd %GITHUB_WORKSPACE%
- msbuild -version > CACHE_KEY.txt
- echo %MANUAL_CACHING% >> CACHE_KEY.txt
-
- mkdir Libraries
- cd Libraries
- echo ::set-env name=LibrariesPath::%cd%
-
- name: Generate cache key.
shell: bash
run: |
+ echo $MANUAL_CACHING >> CACHE_KEY.txt
if [ "$AUTO_CACHING" == "1" ]; then
thisFile=$REPO_NAME/.github/workflows/win.yml
echo `md5sum $thisFile | awk '{ print $1 }'` >> CACHE_KEY.txt
fi
- echo ::set-env name=CACHE_KEY::`md5sum CACHE_KEY.txt | awk '{ print $1 }'`
+ echo "CACHE_KEY=`md5sum CACHE_KEY.txt | awk '{ print $1 }'`" >> $GITHUB_ENV
- name: Choco installs.
- run: |
- choco install --no-progress -y nasm yasm jom ninja
+ run: choco install --no-progress -y nasm yasm jom ninja
- name: Patches.
shell: bash
@@ -130,21 +131,18 @@ jobs:
eval $checkoutCommit
- name: Find any version of Python 2.
- shell: cmd
+ shell: bash
run: |
- echo Find any version of Python 2.
- for /D %%a in (C:\hostedtoolcache\windows\Python\2.*) do (
- SET PY2=%%a\x64
- )
- if [%PY2%] == [] (
- echo Python 2 is not found.
+ echo "Find any version of Python 2."
+ p=`ls /c/hostedtoolcache/windows/python | grep 2 | tail -1`
+ if [ -z "$p" ]; then
+ echo "Python 2 is not found."
exit 1
- )
- echo Found %PY2%.
- echo ::set-env name=PY2::%PY2%
+ fi
+ echo "PY2=C:\\hostedtoolcache\\windows\\Python\\$p\\x64" >> $GITHUB_ENV
+ echo "Found $p."
- name: LZMA.
- shell: cmd
run: |
%VC%
@@ -161,7 +159,6 @@ jobs:
key: ${{ runner.OS }}-${{ env.CACHE_KEY }}-${{ env.OPENSSL_VER }}
- name: OpenSSL.
if: steps.cache-openssl.outputs.cache-hit != 'true'
- shell: cmd
run: |
%VC%
@@ -187,7 +184,6 @@ jobs:
rmdir /S /Q .git
- name: Zlib.
- shell: cmd
run: |
%VC%
@@ -197,6 +193,20 @@ jobs:
cd contrib\vstudio\vc14
msbuild -m zlibstat.vcxproj /property:Configuration=Debug
+ - name: MozJPEG.
+ shell: cmd
+ run: |
+ %VC%
+
+ git clone -b v4.0.1-rc2 %GIT%/mozilla/mozjpeg.git
+ cd mozjpeg
+ cmake . ^
+ -G "Visual Studio 16 2019" ^
+ -A Win32 ^
+ -DWITH_JPEG8=ON ^
+ -DPNG_SUPPORTED=OFF
+ cmake --build . --config Debug
+
- name: OpenAL Soft cache.
id: cache-openal
uses: actions/cache@v2
@@ -204,7 +214,6 @@ jobs:
path: ${{ env.LibrariesPath }}/openal-soft
key: ${{ runner.OS }}-openal-soft-${{ env.CACHE_KEY }}
- name: OpenAL Soft.
- shell: cmd
if: steps.cache-openal.outputs.cache-hit != 'true'
run: |
%VC%
@@ -232,7 +241,6 @@ jobs:
env:
GYP_MSVS_OVERRIDE_PATH: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\'
GYP_MSVS_VERSION: 2019
- shell: cmd
if: steps.cache-breakpad.outputs.cache-hit != 'true'
run: |
cd %LibrariesPath%
@@ -269,7 +277,6 @@ jobs:
key: ${{ runner.OS }}-opus-${{ env.CACHE_KEY }}
- name: Opus.
if: steps.cache-opus.outputs.cache-hit != 'true'
- shell: cmd
run: |
%VC%
@@ -288,7 +295,6 @@ jobs:
key: ${{ runner.OS }}-ffmpeg-${{ env.CACHE_KEY }}-2-${{ hashFiles('**/build_ffmpeg_win.sh') }}
- name: FFmpeg.
if: steps.cache-ffmpeg.outputs.cache-hit != 'true'
- shell: cmd
run: |
%VC%
choco install --no-progress -y msys2
@@ -310,7 +316,6 @@ jobs:
key: ${{ runner.OS }}-qt-${{ env.CACHE_KEY }}-${{ hashFiles('**/qtbase_5_12_8/*') }}
- name: Configure Qt 5.12.8.
if: steps.cache-qt.outputs.cache-hit != 'true'
- shell: cmd
run: |
%VC%
@@ -342,10 +347,12 @@ jobs:
-mp ^
-nomake examples ^
-nomake tests ^
- -platform win32-msvc
+ -platform win32-msvc ^
+ -I "%LibrariesPath%\mozjpeg" ^
+ LIBJPEG_LIBS_DEBUG="%LibrariesPath%\mozjpeg\Debug\jpeg-static.lib" ^
+ LIBJPEG_LIBS_RELEASE="%LibrariesPath%\mozjpeg\Release\jpeg-static.lib"
- name: Qt 5.12.8 build.
if: steps.cache-qt.outputs.cache-hit != 'true'
- shell: cmd
run: |
%VC%
cd qt_%QT%
@@ -364,32 +371,16 @@ jobs:
key: ${{ runner.OS }}-webrtc-${{ env.CACHE_KEY }}
- name: WebRTC.
if: steps.cache-webrtc.outputs.cache-hit != 'true'
- shell: cmd
run: |
%VC%
- :: Qt libjpeg.
- mkdir qt_%QT%
- cd qt_%QT%
- git clone -b %QT_VER% https://github.com/qt/qtbase
-
- move qtbase\src\3rdparty\libjpeg ..
- cd ..
- dir
- rmdir /S /Q qt_%QT%
- mkdir qt_%QT%\qtbase\src\3rdparty\
- move libjpeg qt_%QT%\qtbase\src\3rdparty\
-
- :: WebRTC.
- cd %LibrariesPath%
-
git clone %GIT%/desktop-app/tg_owt.git
mkdir tg_owt\out\Debug
cd tg_owt\out\Debug
cmake -G Ninja ^
-DCMAKE_BUILD_TYPE=Debug ^
-DTG_OWT_SPECIAL_TARGET=win ^
- -DTG_OWT_LIBJPEG_INCLUDE_PATH=%cd%/../../../qt_%QT%/qtbase/src/3rdparty/libjpeg ^
+ -DTG_OWT_LIBJPEG_INCLUDE_PATH=%cd%/../../../mozjpeg ^
-DTG_OWT_OPENSSL_INCLUDE_PATH=%cd%/../../../openssl_%OPENSSL_VER%/include ^
-DTG_OWT_OPUS_INCLUDE_PATH=%cd%/../../../opus/include ^
-DTG_OWT_FFMPEG_INCLUDE_PATH=%cd%/../../../ffmpeg ^
@@ -404,9 +395,6 @@ jobs:
mkdir out\Debug
move tg_owt.lib out\Debug\tg_owt.lib
- cd %LibrariesPath%
- rmdir /S /Q qt_%QT%
-
- name: Read defines.
shell: bash
run: |
@@ -414,16 +402,14 @@ jobs:
if [ -n "${{ matrix.defines }}" ]; then
DEFINE="-D ${{ matrix.defines }}=ON"
echo Define from matrix: $DEFINE
- echo ::set-env name=ARTIFACT_NAME::Kotatogram_${{ matrix.defines }}
+ echo "ARTIFACT_NAME=Kotatogram_${{ matrix.defines }}" >> $GITHUB_ENV
else
- echo ::set-env name=ARTIFACT_NAME::Kotatogram
+ echo "ARTIFACT_NAME=Kotatogram" >> $GITHUB_ENV
fi
- echo "::set-env name=TDESKTOP_BUILD_DEFINE::$DEFINE"
+ echo "TDESKTOP_BUILD_DEFINE=$DEFINE" >> $GITHUB_ENV
- name: Kotatogram Desktop build.
if: env.ONLY_CACHE == 'false'
- shell: cmd
- timeout-minutes: 120
run: |
cd %REPO_NAME%\Telegram
@@ -441,7 +427,6 @@ jobs:
- name: Move artifact.
if: env.UPLOAD_ARTIFACT == 'true'
- shell: cmd
run: |
cd %REPO_NAME%\out\Debug
mkdir artifact
diff --git a/.gitmodules b/.gitmodules
index a44efb082..dfcb38b0d 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -82,12 +82,6 @@
[submodule "Telegram/ThirdParty/qt5ct"]
path = Telegram/ThirdParty/qt5ct
url = https://github.com/desktop-app/qt5ct.git
-[submodule "Telegram/ThirdParty/lxqt-qtplugin"]
- path = Telegram/ThirdParty/lxqt-qtplugin
- url = https://github.com/lxqt/lxqt-qtplugin.git
-[submodule "Telegram/ThirdParty/libqtxdg"]
- path = Telegram/ThirdParty/libqtxdg
- url = https://github.com/lxqt/libqtxdg.git
[submodule "Telegram/ThirdParty/fcitx5-qt"]
path = Telegram/ThirdParty/fcitx5-qt
url = https://github.com/fcitx/fcitx5-qt.git
diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt
index efb6154be..67429e11f 100644
--- a/Telegram/CMakeLists.txt
+++ b/Telegram/CMakeLists.txt
@@ -21,9 +21,6 @@ add_subdirectory(lib_qr)
add_subdirectory(lib_webrtc)
add_subdirectory(codegen)
-include(lib_ui/cmake/generate_styles.cmake)
-include(cmake/generate_numbers.cmake)
-
get_filename_component(src_loc SourceFiles REALPATH)
get_filename_component(res_loc Resources REALPATH)
@@ -37,36 +34,6 @@ include(cmake/td_lang.cmake)
include(cmake/td_scheme.cmake)
include(cmake/td_ui.cmake)
-set(style_files
- boxes/boxes.style
- calls/calls.style
- chat_helpers/chat_helpers.style
- dialogs/dialogs.style
- export/view/export.style
- history/history.style
- info/info.style
- intro/intro.style
- media/view/media_view.style
- media/player/media_player.style
- overview/overview.style
- passport/passport.style
- profile/profile.style
- settings/settings.style
- ui/filter_icons.style
- window/window.style
-)
-
-set(dependent_style_files
- ${submodules_loc}/lib_ui/ui/colors.palette
- ${submodules_loc}/lib_ui/ui/basic.style
- ${submodules_loc}/lib_ui/ui/layers/layers.style
- ${submodules_loc}/lib_ui/ui/widgets/widgets.style
- ${src_loc}/ui/td_common.style
-)
-
-generate_styles(Telegram ${src_loc} "${style_files}" "${dependent_style_files}")
-generate_numbers(Telegram ${res_loc}/numbers.txt)
-
set_target_properties(Telegram PROPERTIES AUTOMOC ON AUTORCC ON)
target_link_libraries(Telegram
@@ -106,17 +73,12 @@ if (LINUX)
desktop-app::external_materialdecoration
desktop-app::external_nimf_qt5
desktop-app::external_qt5ct_support
+ desktop-app::external_xcb_screensaver
+ desktop-app::external_xcb
+ desktop-app::external_glib
)
if (NOT DESKTOP_APP_DISABLE_DBUS_INTEGRATION)
- # conflicts with Qt static link
- if (DESKTOP_APP_USE_PACKAGED_LAZY_PLATFORMTHEMES)
- target_link_libraries(Telegram
- PRIVATE
- desktop-app::external_lxqt_qtplugin
- )
- endif()
-
target_link_libraries(Telegram
PRIVATE
desktop-app::external_statusnotifieritem
@@ -137,35 +99,6 @@ if (LINUX)
)
endif()
- if (DESKTOP_APP_USE_PACKAGED)
- find_package(PkgConfig REQUIRED)
- pkg_check_modules(XCB_SCREENSAVER REQUIRED IMPORTED_TARGET xcb-screensaver)
- pkg_check_modules(XCB REQUIRED IMPORTED_TARGET xcb)
-
- target_link_libraries(Telegram
- PRIVATE
- PkgConfig::XCB_SCREENSAVER
- PkgConfig::XCB
- )
- else()
- target_link_static_libraries(Telegram PRIVATE xcb-screensaver)
- target_link_libraries(Telegram PRIVATE xcb)
- endif()
-
- find_package(PkgConfig REQUIRED)
- pkg_check_modules(GLIB2 REQUIRED IMPORTED_TARGET glib-2.0)
- pkg_check_modules(GOBJECT REQUIRED IMPORTED_TARGET gobject-2.0)
- pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0)
-
- target_link_libraries(Telegram
- PRIVATE
- PkgConfig::GLIB2
- PkgConfig::GOBJECT
- PkgConfig::GIO
- )
-
- target_compile_definitions(Telegram PRIVATE G_LOG_DOMAIN="Kotatogram")
-
if (NOT TDESKTOP_DISABLE_GTK_INTEGRATION)
find_package(PkgConfig REQUIRED)
@@ -191,6 +124,8 @@ nice_target_sources(Telegram ${src_loc}
PRIVATE
${style_files}
+ api/api_attached_stickers.cpp
+ api/api_attached_stickers.h
api/api_authorizations.cpp
api/api_authorizations.h
api/api_bot.cpp
@@ -394,8 +329,6 @@ PRIVATE
core/launcher.h
core/local_url_handlers.cpp
core/local_url_handlers.h
- core/mime_type.cpp
- core/mime_type.h
core/sandbox.cpp
core/sandbox.h
core/shortcuts.cpp
@@ -573,6 +506,8 @@ PRIVATE
history/view/media/history_view_photo.cpp
history/view/media/history_view_poll.h
history/view/media/history_view_poll.cpp
+ history/view/media/history_view_slot_machine.h
+ history/view/media/history_view_slot_machine.cpp
history/view/media/history_view_sticker.h
history/view/media/history_view_sticker.cpp
history/view/media/history_view_theme_document.h
@@ -594,6 +529,12 @@ PRIVATE
history/view/history_view_message.cpp
history/view/history_view_message.h
history/view/history_view_object.h
+ history/view/history_view_pinned_bar.cpp
+ history/view/history_view_pinned_bar.h
+ history/view/history_view_pinned_section.cpp
+ history/view/history_view_pinned_section.h
+ history/view/history_view_pinned_tracker.cpp
+ history/view/history_view_pinned_tracker.h
history/view/history_view_replies_section.cpp
history/view/history_view_replies_section.h
history/view/history_view_schedule_box.cpp
@@ -768,14 +709,6 @@ PRIVATE
media/audio/media_child_ffmpeg_loader.h
media/audio/media_openal_functions.cpp
media/audio/media_openal_functions.h
- media/clip/media_clip_check_streaming.cpp
- media/clip/media_clip_check_streaming.h
- media/clip/media_clip_ffmpeg.cpp
- media/clip/media_clip_ffmpeg.h
- media/clip/media_clip_implementation.cpp
- media/clip/media_clip_implementation.h
- media/clip/media_clip_reader.cpp
- media/clip/media_clip_reader.h
media/player/media_player_button.cpp
media/player/media_player_button.h
media/player/media_player_float.cpp
@@ -1067,8 +1000,8 @@ PRIVATE
ui/filter_icons.h
ui/filter_icon_panel.cpp
ui/filter_icon_panel.h
- ui/grouped_layout.cpp
- ui/grouped_layout.h
+ ui/item_text_options.cpp
+ ui/item_text_options.h
ui/resize_area.h
ui/search_field_controller.cpp
ui/search_field_controller.h
@@ -1076,8 +1009,6 @@ PRIVATE
ui/special_buttons.h
ui/special_fields.cpp
ui/special_fields.h
- ui/text_options.cpp
- ui/text_options.h
ui/unread_badge.cpp
ui/unread_badge.h
window/main_window.cpp
@@ -1305,6 +1236,7 @@ target_compile_definitions(Telegram
PRIVATE
TDESKTOP_API_ID=${TDESKTOP_API_ID}
TDESKTOP_API_HASH=${TDESKTOP_API_HASH}
+ G_LOG_DOMAIN="Kotatogram"
)
if (APPLE OR NOT CMAKE_EXECUTABLE_SUFFIX STREQUAL "" OR NOT "${output_name}" STREQUAL "Kotatogram")
diff --git a/Telegram/Resources/art/bball_idle.tgs b/Telegram/Resources/art/bball_idle.tgs
new file mode 100644
index 000000000..e82b62639
Binary files /dev/null and b/Telegram/Resources/art/bball_idle.tgs differ
diff --git a/Telegram/Resources/art/fball_idle.tgs b/Telegram/Resources/art/fball_idle.tgs
new file mode 100644
index 000000000..b1d71e43a
Binary files /dev/null and b/Telegram/Resources/art/fball_idle.tgs differ
diff --git a/Telegram/Resources/art/slot_0_idle.tgs b/Telegram/Resources/art/slot_0_idle.tgs
new file mode 100644
index 000000000..1d8a0955f
Binary files /dev/null and b/Telegram/Resources/art/slot_0_idle.tgs differ
diff --git a/Telegram/Resources/art/slot_1_idle.tgs b/Telegram/Resources/art/slot_1_idle.tgs
new file mode 100644
index 000000000..b6549225f
Binary files /dev/null and b/Telegram/Resources/art/slot_1_idle.tgs differ
diff --git a/Telegram/Resources/art/slot_2_idle.tgs b/Telegram/Resources/art/slot_2_idle.tgs
new file mode 100644
index 000000000..c13193e81
Binary files /dev/null and b/Telegram/Resources/art/slot_2_idle.tgs differ
diff --git a/Telegram/Resources/art/slot_back.tgs b/Telegram/Resources/art/slot_back.tgs
new file mode 100644
index 000000000..5eaa214a3
Binary files /dev/null and b/Telegram/Resources/art/slot_back.tgs differ
diff --git a/Telegram/Resources/art/slot_pull.tgs b/Telegram/Resources/art/slot_pull.tgs
new file mode 100644
index 000000000..478b69067
Binary files /dev/null and b/Telegram/Resources/art/slot_pull.tgs differ
diff --git a/Telegram/Resources/icons/history_pin.png b/Telegram/Resources/icons/history_pin.png
new file mode 100644
index 000000000..55066f98b
Binary files /dev/null and b/Telegram/Resources/icons/history_pin.png differ
diff --git a/Telegram/Resources/icons/history_pin@2x.png b/Telegram/Resources/icons/history_pin@2x.png
new file mode 100644
index 000000000..285b91659
Binary files /dev/null and b/Telegram/Resources/icons/history_pin@2x.png differ
diff --git a/Telegram/Resources/icons/history_pin@3x.png b/Telegram/Resources/icons/history_pin@3x.png
new file mode 100644
index 000000000..7ef2fce37
Binary files /dev/null and b/Telegram/Resources/icons/history_pin@3x.png differ
diff --git a/Telegram/Resources/icons/pinned_show_all.png b/Telegram/Resources/icons/pinned_show_all.png
new file mode 100644
index 000000000..af6e182ad
Binary files /dev/null and b/Telegram/Resources/icons/pinned_show_all.png differ
diff --git a/Telegram/Resources/icons/pinned_show_all@2x.png b/Telegram/Resources/icons/pinned_show_all@2x.png
new file mode 100644
index 000000000..f00311c0c
Binary files /dev/null and b/Telegram/Resources/icons/pinned_show_all@2x.png differ
diff --git a/Telegram/Resources/icons/pinned_show_all@3x.png b/Telegram/Resources/icons/pinned_show_all@3x.png
new file mode 100644
index 000000000..09e63eb9a
Binary files /dev/null and b/Telegram/Resources/icons/pinned_show_all@3x.png differ
diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings
index 4fecc8f9b..3b04c89c7 100644
--- a/Telegram/Resources/langs/lang.strings
+++ b/Telegram/Resources/langs/lang.strings
@@ -161,13 +161,25 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_deleted" = "Deleted Account";
"lng_deleted_message" = "Deleted message";
"lng_pinned_message" = "Pinned message";
+"lng_pinned_previous" = "Previous message";
"lng_pinned_poll" = "Pinned poll";
"lng_pinned_quiz" = "Pinned quiz";
"lng_pinned_unpin_sure" = "Would you like to unpin this message?";
"lng_pinned_pin_sure" = "Would you like to pin this message?";
+"lng_pinned_pin_sure_group" = "Do you want to pin this message for all members in the group?";
+"lng_pinned_pin_old_sure" = "Do you want to pin an older message while leaving a more recent one pinned?";
"lng_pinned_pin" = "Pin";
"lng_pinned_unpin" = "Unpin";
"lng_pinned_notify" = "Notify all members";
+"lng_pinned_also_for_other" = "Also pin for {user}";
+"lng_pinned_messages_title#one" = "{count} pinned message";
+"lng_pinned_messages_title#other" = "{count} pinned messages";
+"lng_pinned_hide_all" = "Don't show pinned messages";
+"lng_pinned_unpin_all#one" = "Unpin {count} message";
+"lng_pinned_unpin_all#other" = "Unpin all {count} messages";
+"lng_pinned_unpin_all_sure" = "Do you want to unpin all messages?";
+"lng_pinned_hide_all_sure" = "Do you want to hide the pinned messages bar? It will stay hidden until a new message is pinned.";
+"lng_pinned_hide_all_hide" = "Hide";
"lng_edit_media_album_error" = "This file cannot be saved as a part of an album.";
"lng_edit_media_invalid_file" = "Sorry, no way to use this file.";
@@ -1103,6 +1115,13 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_action_secure_proof_of_address" = "proof of address";
"lng_action_secure_phone" = "phone number";
"lng_action_secure_email" = "email address";
+"lng_action_proximity_reached" = "{from} is now within {distance} from {user}";
+"lng_action_proximity_reached_you" = "{from} is now within {distance} from you";
+"lng_action_you_proximity_reached" = "You are now within {distance} from {user}";
+"lng_action_proximity_distance_m#one" = "{count} meter";
+"lng_action_proximity_distance_m#other" = "{count} metres";
+"lng_action_proximity_distance_km#one" = "{count} km";
+"lng_action_proximity_distance_km#other" = "{count} km";
"lng_ttl_photo_received" = "{from} sent you a self-destructing photo. Please view it on your mobile.";
"lng_ttl_photo_sent" = "You sent a self-destructing photo.";
@@ -1524,9 +1543,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_send_files_selected#other" = "{count} files selected";
"lng_send_files#one" = "Send {count} file";
"lng_send_files#other" = "Send {count} files";
-"lng_send_album" = "Send as an album";
-"lng_send_photo" = "Send as a photo";
-"lng_send_file" = "Send as a file";
+"lng_send_grouped" = "Group items";
+"lng_send_compressed" = "Compress images";
"lng_send_media_invalid_files" = "Sorry, no valid files found.";
"lng_forward_choose" = "Choose recipient...";
@@ -2272,6 +2290,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_language_not_ready_link" = "translations platform";
"lng_launch_exe_warning" = "This file has a {extension} extension.\nAre you sure you want to run it?";
+"lng_launch_svg_warning" = "Opening this file can potentially expose your IP address to its sender. Continue?";
"lng_launch_exe_sure" = "Run";
"lng_launch_exe_dont_ask" = "Don't ask me again";
diff --git a/Telegram/Resources/qrc/telegram/telegram.qrc b/Telegram/Resources/qrc/telegram/telegram.qrc
index 051bc815d..33f0dac0d 100644
--- a/Telegram/Resources/qrc/telegram/telegram.qrc
+++ b/Telegram/Resources/qrc/telegram/telegram.qrc
@@ -59,6 +59,13 @@
../../art/sunrise.jpg
../../art/dice_idle.tgs
../../art/dart_idle.tgs
+ ../../art/bball_idle.tgs
+ ../../art/fball_idle.tgs
+ ../../art/slot_0_idle.tgs
+ ../../art/slot_1_idle.tgs
+ ../../art/slot_2_idle.tgs
+ ../../art/slot_back.tgs
+ ../../art/slot_pull.tgs
../../day-blue.tdesktop-theme
../../night.tdesktop-theme
../../night-green.tdesktop-theme
diff --git a/Telegram/Resources/tl/api.tl b/Telegram/Resources/tl/api.tl
index ce2e3b0b7..06f21cc28 100644
--- a/Telegram/Resources/tl/api.tl
+++ b/Telegram/Resources/tl/api.tl
@@ -69,7 +69,7 @@ inputMediaPhotoExternal#e5bbfe1a flags:# url:string ttl_seconds:flags.0?int = In
inputMediaDocumentExternal#fb52dc99 flags:# url:string ttl_seconds:flags.0?int = InputMedia;
inputMediaGame#d33f43f3 id:InputGame = InputMedia;
inputMediaInvoice#f4e096c3 flags:# title:string description:string photo:flags.0?InputWebDocument invoice:Invoice payload:bytes provider:string provider_data:DataJSON start_param:string = InputMedia;
-inputMediaGeoLive#ce4e82fd flags:# stopped:flags.0?true geo_point:InputGeoPoint period:flags.1?int = InputMedia;
+inputMediaGeoLive#971fa843 flags:# stopped:flags.0?true geo_point:InputGeoPoint heading:flags.2?int period:flags.1?int proximity_notification_radius:flags.3?int = InputMedia;
inputMediaPoll#f94e5f1 flags:# poll:Poll correct_answers:flags.0?Vector solution:flags.1?string solution_entities:flags.1?Vector = InputMedia;
inputMediaDice#e66fbf7b emoticon:string = InputMedia;
@@ -78,7 +78,7 @@ inputChatUploadedPhoto#c642724e flags:# file:flags.0?InputFile video:flags.1?Inp
inputChatPhoto#8953ad37 id:InputPhoto = InputChatPhoto;
inputGeoPointEmpty#e4c123d6 = InputGeoPoint;
-inputGeoPoint#f3b7acc9 lat:double long:double = InputGeoPoint;
+inputGeoPoint#48222faf flags:# lat:double long:double accuracy_radius:flags.0?int = InputGeoPoint;
inputPhotoEmpty#1cd7bf0d = InputPhoto;
inputPhoto#3bb3b94a id:long access_hash:long file_reference:bytes = InputPhoto;
@@ -141,7 +141,7 @@ chatPhotoEmpty#37c1011c = ChatPhoto;
chatPhoto#d20b9f3c flags:# has_video:flags.0?true photo_small:FileLocation photo_big:FileLocation dc_id:int = ChatPhoto;
messageEmpty#83e5de54 id:int = Message;
-message#58ae39c9 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true legacy:flags.19?true edit_hide:flags.21?true id:int from_id:flags.8?Peer peer_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long restriction_reason:flags.22?Vector = Message;
+message#58ae39c9 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true legacy:flags.19?true edit_hide:flags.21?true pinned:flags.24?true id:int from_id:flags.8?Peer peer_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long restriction_reason:flags.22?Vector = Message;
messageService#286fa604 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true legacy:flags.19?true id:int from_id:flags.8?Peer peer_id:Peer reply_to:flags.3?MessageReplyHeader date:int action:MessageAction = Message;
messageMediaEmpty#3ded6320 = MessageMedia;
@@ -154,7 +154,7 @@ messageMediaWebPage#a32dd600 webpage:WebPage = MessageMedia;
messageMediaVenue#2ec0533f geo:GeoPoint title:string address:string provider:string venue_id:string venue_type:string = MessageMedia;
messageMediaGame#fdb19008 game:Game = MessageMedia;
messageMediaInvoice#84551347 flags:# shipping_address_requested:flags.1?true test:flags.3?true title:string description:string photo:flags.0?WebDocument receipt_msg_id:flags.2?int currency:string total_amount:long start_param:string = MessageMedia;
-messageMediaGeoLive#7c3c2609 geo:GeoPoint period:int = MessageMedia;
+messageMediaGeoLive#b940c666 flags:# geo:GeoPoint heading:flags.0?int period:int proximity_notification_radius:flags.1?int = MessageMedia;
messageMediaPoll#4bd6e798 poll:Poll results:PollResults = MessageMedia;
messageMediaDice#3f7ee58b value:int emoticon:string = MessageMedia;
@@ -181,6 +181,7 @@ messageActionBotAllowed#abe9affe domain:string = MessageAction;
messageActionSecureValuesSentMe#1b287353 values:Vector credentials:SecureCredentialsEncrypted = MessageAction;
messageActionSecureValuesSent#d95c6154 types:Vector = MessageAction;
messageActionContactSignUp#f3f25f76 = MessageAction;
+messageActionGeoProximityReached#98e0d697 from_id:Peer to_id:Peer distance:int = MessageAction;
dialog#2c171f72 flags:# pinned:flags.2?true unread_mark:flags.3?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage folder_id:flags.4?int = Dialog;
dialogFolder#71bd134c flags:# pinned:flags.2?true folder:Folder peer:Peer top_message:int unread_muted_peers_count:int unread_unmuted_peers_count:int unread_muted_messages_count:int unread_unmuted_messages_count:int = Dialog;
@@ -195,7 +196,7 @@ photoStrippedSize#e0b0bc2e type:string bytes:bytes = PhotoSize;
photoSizeProgressive#5aa86a51 type:string location:FileLocation w:int h:int sizes:Vector = PhotoSize;
geoPointEmpty#1117dd5f = GeoPoint;
-geoPoint#296f104 long:double lat:double access_hash:long = GeoPoint;
+geoPoint#b2a2f663 flags:# long:double lat:double access_hash:long accuracy_radius:flags.0?int = GeoPoint;
auth.sentCode#5e002502 flags:# type:auth.SentCodeType phone_code_hash:string next_type:flags.1?auth.CodeType timeout:flags.2?int = auth.SentCode;
@@ -247,8 +248,8 @@ messages.dialogsSlice#71e094f3 count:int dialogs:Vector