summaryrefslogtreecommitdiff
path: root/protocols/Telegram/tdlib/td/example/uwp/app
diff options
context:
space:
mode:
authoraunsane <aunsane@gmail.com>2018-04-27 21:33:17 +0300
committeraunsane <aunsane@gmail.com>2018-04-27 21:33:17 +0300
commite1ec72eab6d00b3ba38e5932bc88920f103b6e4a (patch)
tree999de2725a83e30fbbf6576200525d4ef0c5fe38 /protocols/Telegram/tdlib/td/example/uwp/app
parentb9ce1d4d98525490ca1a38e2d9fd4f3369adb3e0 (diff)
Telegram: initial commit
- tdlib moved to telegram dir
Diffstat (limited to 'protocols/Telegram/tdlib/td/example/uwp/app')
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/.gitignore5
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/App.xaml7
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/App.xaml.cs104
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/ApplicationInsights.config3
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/Assets/LockScreenLogo.scale-200.pngbin0 -> 1430 bytes
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/Assets/SplashScreen.scale-200.pngbin0 -> 7700 bytes
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/Assets/Square150x150Logo.scale-200.pngbin0 -> 2937 bytes
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/Assets/Square44x44Logo.scale-200.pngbin0 -> 1647 bytes
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/Assets/Square44x44Logo.targetsize-24_altform-unplated.pngbin0 -> 1255 bytes
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/Assets/StoreLogo.pngbin0 -> 1451 bytes
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/Assets/Wide310x150Logo.scale-200.pngbin0 -> 3204 bytes
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/MainPage.xaml29
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/MainPage.xaml.cs171
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/Package.appxmanifest28
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/Properties/AssemblyInfo.cs29
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/Properties/Default.rd.xml31
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/TdApp.csproj151
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/TdApp_TemporaryKey.pfxbin0 -> 2456 bytes
-rw-r--r--protocols/Telegram/tdlib/td/example/uwp/app/project.json19
19 files changed, 577 insertions, 0 deletions
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/.gitignore b/protocols/Telegram/tdlib/td/example/uwp/app/.gitignore
new file mode 100644
index 0000000000..37ab08165b
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/.gitignore
@@ -0,0 +1,5 @@
+.vs/
+bin/
+obj/
+project.lock.json
+TdApp.csproj.user
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/App.xaml b/protocols/Telegram/tdlib/td/example/uwp/app/App.xaml
new file mode 100644
index 0000000000..b4256fd441
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/App.xaml
@@ -0,0 +1,7 @@
+<Application
+ x:Class="TdApp.App"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="using:TdApp"
+ RequestedTheme="Light">
+</Application>
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/App.xaml.cs b/protocols/Telegram/tdlib/td/example/uwp/app/App.xaml.cs
new file mode 100644
index 0000000000..0ed0f96812
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/App.xaml.cs
@@ -0,0 +1,104 @@
+//
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2018
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+using System;
+using Windows.ApplicationModel;
+using Windows.ApplicationModel.Activation;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Navigation;
+
+namespace TdApp
+{
+ /// <summary>
+ /// Provides application-specific behavior to supplement the default Application class.
+ /// </summary>
+ sealed partial class App : Application
+ {
+ /// <summary>
+ /// Initializes the singleton application object. This is the first line of authored code
+ /// executed, and as such is the logical equivalent of main() or WinMain().
+ /// </summary>
+ public App()
+ {
+ Microsoft.ApplicationInsights.WindowsAppInitializer.InitializeAsync(
+ Microsoft.ApplicationInsights.WindowsCollectors.Metadata |
+ Microsoft.ApplicationInsights.WindowsCollectors.Session);
+ this.InitializeComponent();
+ this.Suspending += OnSuspending;
+ }
+
+ /// <summary>
+ /// Invoked when the application is launched normally by the end user. Other entry points
+ /// will be used such as when the application is launched to open a specific file.
+ /// </summary>
+ /// <param name="e">Details about the launch request and process.</param>
+ protected override void OnLaunched(LaunchActivatedEventArgs e)
+ {
+
+#if DEBUG
+ if (System.Diagnostics.Debugger.IsAttached)
+ {
+ this.DebugSettings.EnableFrameRateCounter = true;
+ }
+#endif
+
+ Frame rootFrame = Window.Current.Content as Frame;
+
+ // Do not repeat app initialization when the Window already has content,
+ // just ensure that the window is active
+ if (rootFrame == null)
+ {
+ // Create a Frame to act as the navigation context and navigate to the first page
+ rootFrame = new Frame();
+
+ rootFrame.NavigationFailed += OnNavigationFailed;
+
+ if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
+ {
+ //TODO: Load state from previously suspended application
+ }
+
+ // Place the frame in the current Window
+ Window.Current.Content = rootFrame;
+ }
+
+ if (rootFrame.Content == null)
+ {
+ // When the navigation stack isn't restored navigate to the first page,
+ // configuring the new page by passing required information as a navigation
+ // parameter
+ rootFrame.Navigate(typeof(MainPage), e.Arguments);
+ }
+ // Ensure the current window is active
+ Window.Current.Activate();
+ }
+
+ /// <summary>
+ /// Invoked when Navigation to a certain page fails
+ /// </summary>
+ /// <param name="sender">The Frame which failed navigation</param>
+ /// <param name="e">Details about the navigation failure</param>
+ void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
+ {
+ throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
+ }
+
+ /// <summary>
+ /// Invoked when application execution is being suspended. Application state is saved
+ /// without knowing whether the application will be terminated or resumed with the contents
+ /// of memory still intact.
+ /// </summary>
+ /// <param name="sender">The source of the suspend request.</param>
+ /// <param name="e">Details about the suspend request.</param>
+ private void OnSuspending(object sender, SuspendingEventArgs e)
+ {
+ var deferral = e.SuspendingOperation.GetDeferral();
+ //TODO: Save application state and stop any background activity
+ deferral.Complete();
+ }
+ }
+}
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/ApplicationInsights.config b/protocols/Telegram/tdlib/td/example/uwp/app/ApplicationInsights.config
new file mode 100644
index 0000000000..cb2a232da3
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/ApplicationInsights.config
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ApplicationInsights xmlns = "http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
+</ApplicationInsights>
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/Assets/LockScreenLogo.scale-200.png b/protocols/Telegram/tdlib/td/example/uwp/app/Assets/LockScreenLogo.scale-200.png
new file mode 100644
index 0000000000..735f57adb5
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/Assets/LockScreenLogo.scale-200.png
Binary files differ
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/Assets/SplashScreen.scale-200.png b/protocols/Telegram/tdlib/td/example/uwp/app/Assets/SplashScreen.scale-200.png
new file mode 100644
index 0000000000..023e7f1fed
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/Assets/SplashScreen.scale-200.png
Binary files differ
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/Assets/Square150x150Logo.scale-200.png b/protocols/Telegram/tdlib/td/example/uwp/app/Assets/Square150x150Logo.scale-200.png
new file mode 100644
index 0000000000..af49fec1a5
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/Assets/Square150x150Logo.scale-200.png
Binary files differ
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/Assets/Square44x44Logo.scale-200.png b/protocols/Telegram/tdlib/td/example/uwp/app/Assets/Square44x44Logo.scale-200.png
new file mode 100644
index 0000000000..ce342a2ec8
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/Assets/Square44x44Logo.scale-200.png
Binary files differ
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/protocols/Telegram/tdlib/td/example/uwp/app/Assets/Square44x44Logo.targetsize-24_altform-unplated.png
new file mode 100644
index 0000000000..f6c02ce97e
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/Assets/Square44x44Logo.targetsize-24_altform-unplated.png
Binary files differ
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/Assets/StoreLogo.png b/protocols/Telegram/tdlib/td/example/uwp/app/Assets/StoreLogo.png
new file mode 100644
index 0000000000..7385b56c0e
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/Assets/StoreLogo.png
Binary files differ
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/Assets/Wide310x150Logo.scale-200.png b/protocols/Telegram/tdlib/td/example/uwp/app/Assets/Wide310x150Logo.scale-200.png
new file mode 100644
index 0000000000..288995b397
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/Assets/Wide310x150Logo.scale-200.png
Binary files differ
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/MainPage.xaml b/protocols/Telegram/tdlib/td/example/uwp/app/MainPage.xaml
new file mode 100644
index 0000000000..cdff97d9f3
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/MainPage.xaml
@@ -0,0 +1,29 @@
+<Page
+ x:Class="TdApp.MainPage"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="using:TdApp"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d"
+ x:Name="Self">
+
+ <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <Grid>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <TextBox x:Name="Input"/>
+ <Button Grid.Column="1" x:Name="Send" Content="send" Click="Button_Click"/>
+ </Grid>
+ <ListBox Grid.Row="1" x:Name="ItemsControl" ItemsSource="{Binding Items, ElementName=Self}">
+
+ </ListBox>
+ <!--<Button Content="Test" Click="Button_Click"/>-->
+ </Grid>
+</Page>
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/MainPage.xaml.cs b/protocols/Telegram/tdlib/td/example/uwp/app/MainPage.xaml.cs
new file mode 100644
index 0000000000..9bdf5070ee
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/MainPage.xaml.cs
@@ -0,0 +1,171 @@
+//
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2018
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+using System;
+using System.IO;
+using Td = Telegram.Td;
+using TdApi = Telegram.Td.Api;
+using Windows.UI.Core;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+
+namespace TdApp
+{
+ public sealed partial class MainPage : Page
+ {
+ public System.Collections.ObjectModel.ObservableCollection<string> Items { get; set; }
+
+ private static MyClientResultHandler _handler;
+
+ public MainPage()
+ {
+ InitializeComponent();
+
+ Items = new System.Collections.ObjectModel.ObservableCollection<string>();
+ _handler = new MyClientResultHandler(this);
+
+ System.Threading.Tasks.Task.Run(() =>
+ {
+ try
+ {
+ Td.Log.SetFilePath(Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "log"));
+ _client = Td.Client.Create(_handler);
+ var parameters = new TdApi.TdlibParameters();
+ parameters.DatabaseDirectory = Windows.Storage.ApplicationData.Current.LocalFolder.Path;
+ parameters.UseSecretChats = true;
+ parameters.UseMessageDatabase = true;
+ parameters.ApiId = 94575;
+ parameters.ApiHash = "a3406de8d171bb422bb6ddf3bbd800e2";
+ parameters.SystemLanguageCode = "en";
+ parameters.DeviceModel = "en";
+ parameters.SystemVersion = "en";
+ parameters.ApplicationVersion = "1.0.0";
+ _client.Send(new TdApi.SetTdlibParameters(parameters), null);
+ _client.Send(new TdApi.CheckDatabaseEncryptionKey(), null);
+ _client.Run();
+ }
+ catch (Exception ex)
+ {
+ Print(ex.ToString());
+ }
+ });
+ }
+
+ public void Print(String str)
+ {
+ var delayTask = Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
+ {
+ Items.Insert(0, str.Substring(0, Math.Min(1024, str.Length)));
+ });
+ }
+
+ private static Td.Client _client;
+
+ private void AcceptCommand(String command)
+ {
+ Input.Text = string.Empty;
+ Items.Insert(0, string.Format(">>{0}", command));
+ }
+ private void Button_Click(object sender, RoutedEventArgs e)
+ {
+ var command = Input.Text;
+
+ if (command.StartsWith("DESTROY"))
+ {
+ AcceptCommand("Destroy");
+ _client.Send(new TdApi.Destroy(), _handler);
+ }
+ else if (command.StartsWith("lo"))
+ {
+ AcceptCommand("LogOut");
+ _client.Send(new TdApi.LogOut(), _handler);
+ }
+ else if (command.StartsWith("gas"))
+ {
+ AcceptCommand(command);
+ _client.Send(new TdApi.GetAuthorizationState(), _handler);
+ }
+ else if (command.StartsWith("sap"))
+ {
+ var args = command.Split(" ".ToCharArray(), 2);
+ AcceptCommand(command);
+ _client.Send(new TdApi.SetAuthenticationPhoneNumber(args[1], false, false), _handler);
+ }
+ else if (command.StartsWith("cac"))
+ {
+ var args = command.Split(" ".ToCharArray(), 2);
+ AcceptCommand(command);
+ _client.Send(new TdApi.CheckAuthenticationCode(args[1], String.Empty, String.Empty), _handler);
+ }
+ else if (command.StartsWith("cap"))
+ {
+ var args = command.Split(" ".ToCharArray(), 2);
+ AcceptCommand(command);
+ _client.Send(new TdApi.CheckAuthenticationPassword(args[1]), _handler);
+ }
+ else if (command.StartsWith("gco"))
+ {
+ var args = command.Split(" ".ToCharArray(), 2);
+ AcceptCommand(command);
+ _client.Send(new TdApi.SearchContacts(), _handler);
+ }
+ else if (command.StartsWith("df"))
+ {
+ var args = command.Split(" ".ToCharArray(), 2);
+ AcceptCommand(command);
+ _client.Send(new TdApi.DownloadFile(Int32.Parse(args[1]), 1), _handler);
+ }
+ else if (command.StartsWith("bench"))
+ {
+ var args = command.Split(" ".ToCharArray(), 2);
+ AcceptCommand(command);
+ var cnt = Int32.Parse(args[1]);
+ var handler = new BenchSimpleHandler(this, cnt);
+ for (int i = 0; i < cnt; i++)
+ {
+ _client.Send(new TdApi.TestSquareInt(123), handler);
+ }
+ }
+ }
+ }
+
+ class MyClientResultHandler : Td.ClientResultHandler
+ {
+ private MainPage _page;
+
+ public MyClientResultHandler(MainPage page)
+ {
+ _page = page;
+ }
+
+ public void OnResult(TdApi.BaseObject obj)
+ {
+ var str = obj.ToString();
+ _page.Print(str);
+ }
+ }
+
+ class BenchSimpleHandler : Td.ClientResultHandler
+ {
+ private MainPage _page;
+ private int _cnt;
+
+ public BenchSimpleHandler(MainPage page, int cnt)
+ {
+ _page = page;
+ _cnt = cnt;
+ }
+
+ public void OnResult(TdApi.BaseObject obj)
+ {
+ _cnt--;
+ if (_cnt == 0)
+ {
+ _page.Print("DONE");
+ }
+ }
+ }
+}
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/Package.appxmanifest b/protocols/Telegram/tdlib/td/example/uwp/app/Package.appxmanifest
new file mode 100644
index 0000000000..ca1235ffa7
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/Package.appxmanifest
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp">
+ <Identity Name="1c9ba6de-23cf-4aef-803b-91fcc451b69a" Publisher="CN=arseny30" Version="1.0.0.0" />
+ <mp:PhoneIdentity PhoneProductId="1c9ba6de-23cf-4aef-803b-91fcc451b69a" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
+ <Properties>
+ <DisplayName>TdApp</DisplayName>
+ <PublisherDisplayName>arseny30</PublisherDisplayName>
+ <Logo>Assets\StoreLogo.png</Logo>
+ </Properties>
+ <Dependencies>
+ <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
+ </Dependencies>
+ <Resources>
+ <Resource Language="x-generate" />
+ </Resources>
+ <Applications>
+ <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="TdApp.App">
+ <uap:VisualElements DisplayName="TdApp" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="TdApp" BackgroundColor="transparent">
+ <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png">
+ </uap:DefaultTile>
+ <uap:SplashScreen Image="Assets\SplashScreen.png" />
+ </uap:VisualElements>
+ </Application>
+ </Applications>
+ <Capabilities>
+ <Capability Name="internetClient" />
+ </Capabilities>
+</Package> \ No newline at end of file
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/Properties/AssemblyInfo.cs b/protocols/Telegram/tdlib/td/example/uwp/app/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..99e2b83bea
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/Properties/AssemblyInfo.cs
@@ -0,0 +1,29 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("App2")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("App2")]
+[assembly: AssemblyCopyright("Copyright © 2015-2018")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: ComVisible(false)] \ No newline at end of file
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/Properties/Default.rd.xml b/protocols/Telegram/tdlib/td/example/uwp/app/Properties/Default.rd.xml
new file mode 100644
index 0000000000..479eb7669d
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/Properties/Default.rd.xml
@@ -0,0 +1,31 @@
+<!--
+ This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most
+ developers. However, you can modify these parameters to modify the behavior of the .NET Native
+ optimizer.
+
+ Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919
+
+ To fully enable reflection for App1.MyClass and all of its public/private members
+ <Type Name="App1.MyClass" Dynamic="Required All"/>
+
+ To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32
+ <TypeInstantiation Name="App1.AppClass" Arguments="System.Int32" Activate="Required Public" />
+
+ Using the Namespace directive to apply reflection policy to all the types in a particular namespace
+ <Namespace Name="DataClasses.ViewModels" Seralize="All" />
+-->
+
+<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
+ <Application>
+ <!--
+ An Assembly element with Name="*Application*" applies to all assemblies in
+ the application package. The asterisks are not wildcards.
+ -->
+ <Assembly Name="*Application*" Dynamic="Required All" />
+
+
+ <!-- Add your application specific runtime directives here. -->
+
+
+ </Application>
+</Directives> \ No newline at end of file
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/TdApp.csproj b/protocols/Telegram/tdlib/td/example/uwp/app/TdApp.csproj
new file mode 100644
index 0000000000..b3d1d944d1
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/TdApp.csproj
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+ <ProjectGuid>{0B971A4C-EC00-4FED-BCC2-FCD03B78D644}</ProjectGuid>
+ <OutputType>AppContainerExe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>TdApp</RootNamespace>
+ <AssemblyName>TdApp</AssemblyName>
+ <DefaultLanguage>en-US</DefaultLanguage>
+ <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
+ <TargetPlatformVersion>10.0.10586.0</TargetPlatformVersion>
+ <TargetPlatformMinVersion>10.0.10240.0</TargetPlatformMinVersion>
+ <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
+ <FileAlignment>512</FileAlignment>
+ <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <PackageCertificateKeyFile>TdApp_TemporaryKey.pfx</PackageCertificateKeyFile>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\x86\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
+ <NoWarn>;2008</NoWarn>
+ <DebugType>full</DebugType>
+ <PlatformTarget>x86</PlatformTarget>
+ <UseVSHostingProcess>false</UseVSHostingProcess>
+ <ErrorReport>prompt</ErrorReport>
+ <Prefer32Bit>true</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+ <OutputPath>bin\x86\Release\</OutputPath>
+ <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
+ <Optimize>true</Optimize>
+ <NoWarn>;2008</NoWarn>
+ <DebugType>pdbonly</DebugType>
+ <PlatformTarget>x86</PlatformTarget>
+ <UseVSHostingProcess>false</UseVSHostingProcess>
+ <ErrorReport>prompt</ErrorReport>
+ <Prefer32Bit>true</Prefer32Bit>
+ <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\ARM\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
+ <NoWarn>;2008</NoWarn>
+ <DebugType>full</DebugType>
+ <PlatformTarget>ARM</PlatformTarget>
+ <UseVSHostingProcess>false</UseVSHostingProcess>
+ <ErrorReport>prompt</ErrorReport>
+ <Prefer32Bit>true</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
+ <OutputPath>bin\ARM\Release\</OutputPath>
+ <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
+ <Optimize>true</Optimize>
+ <NoWarn>;2008</NoWarn>
+ <DebugType>pdbonly</DebugType>
+ <PlatformTarget>ARM</PlatformTarget>
+ <UseVSHostingProcess>false</UseVSHostingProcess>
+ <ErrorReport>prompt</ErrorReport>
+ <Prefer32Bit>true</Prefer32Bit>
+ <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\x64\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
+ <NoWarn>;2008</NoWarn>
+ <DebugType>full</DebugType>
+ <PlatformTarget>x64</PlatformTarget>
+ <UseVSHostingProcess>false</UseVSHostingProcess>
+ <ErrorReport>prompt</ErrorReport>
+ <Prefer32Bit>true</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+ <OutputPath>bin\x64\Release\</OutputPath>
+ <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
+ <Optimize>true</Optimize>
+ <NoWarn>;2008</NoWarn>
+ <DebugType>pdbonly</DebugType>
+ <PlatformTarget>x64</PlatformTarget>
+ <UseVSHostingProcess>false</UseVSHostingProcess>
+ <ErrorReport>prompt</ErrorReport>
+ <Prefer32Bit>true</Prefer32Bit>
+ <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
+ </PropertyGroup>
+ <ItemGroup>
+ <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
+ <Content Include="ApplicationInsights.config">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <None Include="project.json" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="App.xaml.cs">
+ <DependentUpon>App.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="MainPage.xaml.cs">
+ <DependentUpon>MainPage.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <AppxManifest Include="Package.appxmanifest">
+ <SubType>Designer</SubType>
+ </AppxManifest>
+ <None Include="TdApp_TemporaryKey.pfx" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Properties\Default.rd.xml" />
+ <Content Include="Assets\LockScreenLogo.scale-200.png" />
+ <Content Include="Assets\SplashScreen.scale-200.png" />
+ <Content Include="Assets\Square150x150Logo.scale-200.png" />
+ <Content Include="Assets\Square44x44Logo.scale-200.png" />
+ <Content Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
+ <Content Include="Assets\StoreLogo.png" />
+ <Content Include="Assets\Wide310x150Logo.scale-200.png" />
+ </ItemGroup>
+ <ItemGroup>
+ <ApplicationDefinition Include="App.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </ApplicationDefinition>
+ <Page Include="MainPage.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
+ </ItemGroup>
+ <ItemGroup>
+ <SDKReference Include="Microsoft.VCLibs, Version=14.0">
+ <Name>Visual C++ 2015 Runtime for Universal Windows Platform Apps</Name>
+ </SDKReference>
+ <SDKReference Include="Telegram.Td.UWP, Version=1.0">
+ <Name>TDLib for Universal Windows Platform</Name>
+ </SDKReference>
+ </ItemGroup>
+ <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' ">
+ <VisualStudioVersion>14.0</VisualStudioVersion>
+ </PropertyGroup>
+ <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/TdApp_TemporaryKey.pfx b/protocols/Telegram/tdlib/td/example/uwp/app/TdApp_TemporaryKey.pfx
new file mode 100644
index 0000000000..05ffbcabbc
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/TdApp_TemporaryKey.pfx
Binary files differ
diff --git a/protocols/Telegram/tdlib/td/example/uwp/app/project.json b/protocols/Telegram/tdlib/td/example/uwp/app/project.json
new file mode 100644
index 0000000000..e3b2dba25f
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/example/uwp/app/project.json
@@ -0,0 +1,19 @@
+{
+ "dependencies": {
+ "Microsoft.ApplicationInsights": "1.0.0",
+ "Microsoft.ApplicationInsights.PersistenceChannel": "1.0.0",
+ "Microsoft.ApplicationInsights.WindowsApps": "1.0.0",
+ "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"
+ },
+ "frameworks": {
+ "uap10.0": {}
+ },
+ "runtimes": {
+ "win10-arm": {},
+ "win10-arm-aot": {},
+ "win10-x86": {},
+ "win10-x86-aot": {},
+ "win10-x64": {},
+ "win10-x64-aot": {}
+ }
+} \ No newline at end of file