mirror of
https://git.selfprivacy.org/kherel/selfprivacy.org.app.git
synced 2025-01-08 17:11:14 +00:00
Merge pull request 'docs: Add Digital Ocean how-to markdown and privacy policy' (#158) from release-party into master
Reviewed-on: https://git.selfprivacy.org/kherel/selfprivacy.org.app/pulls/158 Reviewed-by: Inex Code <inex.code@selfprivacy.org>
This commit is contained in:
commit
9dbe79ed73
12
assets/markdown/how_digital_ocean-en.md
Normal file
12
assets/markdown/how_digital_ocean-en.md
Normal file
|
@ -0,0 +1,12 @@
|
|||
### How to get Digital Ocean API Token
|
||||
1. Visit the following [link](https://cloud.digitalocean.com/) and sign
|
||||
into newly created account.
|
||||
2. Enter into previously created project. If you haven't created one,
|
||||
then please proceed.
|
||||
3. Go to the "API" link on the left bar.
|
||||
4. Click on the "Generate New Token".
|
||||
5. Enter any name for the token.
|
||||
6. Put expiration time to "No expiry".
|
||||
7. Check the "Write (optional)" checkbox.
|
||||
8. Now click on the "Generate Token" button.
|
||||
9. After that, the token will be shown. Store it in any reliable place, preferably a password manager.
|
10
assets/markdown/how_digital_ocean-ru.md
Normal file
10
assets/markdown/how_digital_ocean-ru.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
### How to get Digital Ocean API Token
|
||||
1. Перейдите по [ссылке](https://cloud.digitalocean.com/) и войдите в ваш аккаунт.
|
||||
2. Перейдите в новый проект, либо создайте проект, если ещё этого не сделали.
|
||||
3. Перейдите в "API" раздел в меню слева.
|
||||
4. Нажмите на "Generate New Token".
|
||||
5. Введите какое-нибудь имя для токена.
|
||||
6. Установите время истощения на "No expiry".
|
||||
7. Проставьте галочку в пункте "Write (optional)".
|
||||
8. Теперь нажмите на "Generate Token" кнопку внизу.
|
||||
9. После этого появится ваш токен. Скопируйте его в надёжное место, лучше в ваш собственный менеджер паролей.
|
|
@ -54,7 +54,8 @@
|
|||
"about_application_page": {
|
||||
"title": "About",
|
||||
"application_version_text": "Application version v.{}",
|
||||
"api_version_text": "Server API version v.{}"
|
||||
"api_version_text": "Server API version v.{}",
|
||||
"privacy_policy": "Privacy policy"
|
||||
},
|
||||
"application_settings": {
|
||||
"title": "Application settings",
|
||||
|
@ -289,7 +290,7 @@
|
|||
"select_provider_payment_text_do": "Credit cards, Google Pay, PayPal",
|
||||
"select_provider_email_notice": "E-mail hosting won't be available for new clients. Nevertheless it will be unlocked as soon as you complete your first payment.",
|
||||
"select_provider_site_button": "Visit site",
|
||||
"connect_to_server_provider": "Autorize in ",
|
||||
"connect_to_server_provider": "Now log in ",
|
||||
"connect_to_server_provider_text": "With API token SelfPrivacy will be able to rent a machine and setup your server on it",
|
||||
"how": "How to obtain API token",
|
||||
"provider_bad_key_error": "Provider API key is invalid",
|
||||
|
|
|
@ -54,7 +54,8 @@
|
|||
"about_application_page": {
|
||||
"title": "О приложении",
|
||||
"application_version_text": "Версия приложения v.{}",
|
||||
"api_version_text": "Версия API сервера v.{}"
|
||||
"api_version_text": "Версия API сервера v.{}",
|
||||
"privacy_policy": "Политика конфиденциальности"
|
||||
},
|
||||
"application_settings": {
|
||||
"title": "Настройки приложения",
|
||||
|
@ -475,4 +476,4 @@
|
|||
"length_not_equal": "Длина строки [], должно быть равно {}",
|
||||
"length_longer": "Длина строки [], должно быть меньше либо равно {}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import 'package:selfprivacy/ui/components/brand_header/brand_header.dart';
|
|||
import 'package:selfprivacy/ui/components/brand_text/brand_text.dart';
|
||||
import 'package:package_info/package_info.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
class AboutApplicationPage extends StatelessWidget {
|
||||
const AboutApplicationPage({super.key});
|
||||
|
@ -37,6 +38,26 @@ class AboutApplicationPage extends StatelessWidget {
|
|||
.tr(args: [snapshot.data.toString()]),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
// Button to call showAboutDialog
|
||||
TextButton(
|
||||
onPressed: () => showAboutDialog(
|
||||
context: context,
|
||||
applicationName: 'SelfPrivacy',
|
||||
applicationLegalese: '© 2022 SelfPrivacy',
|
||||
// Link to privacy policy
|
||||
children: [
|
||||
TextButton(
|
||||
onPressed: () => launchUrl(
|
||||
Uri.parse('https://selfprivacy.ru/privacy-policy'),
|
||||
mode: LaunchMode.externalApplication,
|
||||
),
|
||||
child: Text('about_application_page.privacy_policy'.tr()),
|
||||
),
|
||||
],
|
||||
),
|
||||
child: const Text('Show about dialog'),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
|
@ -122,7 +122,8 @@ class InitializingPage extends StatelessWidget {
|
|||
},
|
||||
),
|
||||
),
|
||||
if (cubit.state is ServerInstallationEmpty)
|
||||
if (cubit.state is ServerInstallationEmpty ||
|
||||
cubit.state is ServerInstallationNotFinished)
|
||||
Container(
|
||||
alignment: Alignment.center,
|
||||
child: BrandButton.text(
|
||||
|
|
|
@ -51,7 +51,7 @@ class _ServerProviderPickerState extends State<ServerProviderPicker> {
|
|||
providerCubit: widget.formCubit,
|
||||
providerInfo: ProviderPageInfo(
|
||||
providerType: ServerProvider.hetzner,
|
||||
pathToHow: 'hetzner_how',
|
||||
pathToHow: 'how_hetzner',
|
||||
image: Image.asset(
|
||||
'assets/images/logos/hetzner.png',
|
||||
width: 150,
|
||||
|
@ -64,7 +64,7 @@ class _ServerProviderPickerState extends State<ServerProviderPicker> {
|
|||
providerCubit: widget.formCubit,
|
||||
providerInfo: ProviderPageInfo(
|
||||
providerType: ServerProvider.digitalOcean,
|
||||
pathToHow: 'hetzner_how',
|
||||
pathToHow: 'how_digital_ocean',
|
||||
image: Image.asset(
|
||||
'assets/images/logos/digital_ocean.png',
|
||||
width: 150,
|
||||
|
|
Loading…
Reference in a new issue