mirror of
https://github.com/leonboe1/QuickDrop.git
synced 2026-11-11 02:51:11 +00:00
Add startup banner
This commit is contained in:
1 parent
b81a453b69
commit
6986b6ce2b
23 files changed
+225
-1
No files matched your search
@@ -11,6 +11,7 @@ import NearbyShare
|
||||
import SwiftUI
|
||||
import StoreKit
|
||||
import AudioToolbox
|
||||
import BezelNotification
|
||||
|
||||
@main
|
||||
class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDelegate, MainAppDelegate{
|
||||
@@ -75,6 +76,8 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele
|
||||
log("New user - plus version cannot be granted")
|
||||
}
|
||||
}
|
||||
|
||||
BezelNotification.show(messageText: "ReadyToReceive".localized(), icon: .receiveIcon)
|
||||
}
|
||||
|
||||
UNUserNotificationCenter.current().delegate=self
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "laptopcomputer.and.arrow.down.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 8.9 KiB |
@@ -50,6 +50,7 @@
|
||||
|
||||
"GetSupport" = "Support";
|
||||
|
||||
"ReadyToReceive" = "Ready to receive";
|
||||
"PrivacyPolicy" = "Privacy Policy";
|
||||
"SendClipboard" = "Send Clipboard";
|
||||
"Clipboard" = "Clipboard";
|
||||
|
||||
@@ -133,6 +133,145 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
|
||||
BezelNotification
|
||||
https://github.com/BlueHuskyStudios/BezelNotification
|
||||
|
||||
BLUE HUSKY LICENSE 1 - PUBLIC SHARE - OPUS 2
|
||||
|
||||
0: LAYMAN'S TERMS
|
||||
This section is meant to explain the purpose of this license in Layman's
|
||||
terms, and should thusly never be seen as legally binding. This disclaimer does
|
||||
not apply to further sections of this license.
|
||||
|
||||
If you made this:
|
||||
|
||||
1. This is your product and you can do what you want with it
|
||||
a. You must make sure that if you use anyone else's stuff in it, you do so
|
||||
with their permission, or under Fair Use
|
||||
b. If you do include someone else's stuff, you can't claim you made that
|
||||
c. You guarantee you're providing this product for free
|
||||
2. You must let others do what they want with it
|
||||
a. They still have to say you made it in the first place
|
||||
b. You have to include this license along with your product for it to count
|
||||
c. They have to include this license when they redistribute your product
|
||||
3. This license is overridden by governmental laws
|
||||
4. You're not responsible for bad things that might happen because someone
|
||||
used your product
|
||||
|
||||
If you got this:
|
||||
|
||||
1. This is not your product, and you need to respect that
|
||||
a. You must make sure that if you put anyone else's stuff in it, you do so
|
||||
with their permission, or under Fair Use
|
||||
b. If you do include someone else's stuff, you can't claim you made that
|
||||
c. You are guaranteed you're getting this product for free
|
||||
2. You can still do what you want with this
|
||||
a. You still have to say who made it in the first place
|
||||
b. You get all the freedoms in this license along with this product
|
||||
c. You have to include this license when you redistribute this product
|
||||
3. This license is overridden by governmental laws
|
||||
4. The original creator is not responsible for bad things that might happen
|
||||
because you used this product
|
||||
|
||||
1: DECLARATION OF COPYRIGHT
|
||||
This Product is copyright Ben Leggiero (c) 2017 BH-1-PS
|
||||
|
||||
2: DEFINITIONS
|
||||
- "License": this text
|
||||
- "Product": the product with which this License was distributed, and any
|
||||
assets necessary for its use
|
||||
- "Creator": any entity or entities who originally invented the Product,
|
||||
withstanding related and contributing parties
|
||||
- "Licensee": any entity or entities involved in consumption of the Product
|
||||
- "Licensor": any entity or entities involved in distribution of the Product
|
||||
and of this License
|
||||
|
||||
3: NOTICE OF PERMISSIONS
|
||||
Permission is hereby granted to any entity obtaining a copy of the Product,
|
||||
to use, copy, modify, host, redistribute, sublicense, sell copies of, and/or
|
||||
otherwise handle the Product, and to permit Licensees to also do so, given the
|
||||
following conditions are obeyed:
|
||||
|
||||
- The above copyright notice and this permission notice shall be included in
|
||||
all copies and/or substantial portions of the Product.
|
||||
- This License shall be blatantly provided, unmodified, along with the Product
|
||||
- Attribution to the Creator must be blatantly stated, modifications of the
|
||||
Product notwithstanding
|
||||
|
||||
4: DECLARATION OF OWNERSHIP
|
||||
The Creator hereby declares that the Product is the intellectual property
|
||||
solely of the Creator, and of no other party. The Creator maintains that any
|
||||
intellectual property which falls under § 5.1 of this License is considered
|
||||
fair use as described in § 5.4 of this License.
|
||||
|
||||
5: THE RIGHTS OF THE CREATOR
|
||||
1. The Creator reserves no rights to any previously-established intellectual
|
||||
property contained within the Product which is implicitly or explicitly
|
||||
owned by any other entity or entities.
|
||||
2. The Creator will not gain any profit through the creation or distribution
|
||||
of the Product.
|
||||
a. The Creator forfeits the right to request compensation for any use of the
|
||||
Product which adheres to the restrictions described by this License.
|
||||
3. The Creator reserves the right to freely create, edit, distribute, destroy,
|
||||
or otherwise interact with the whole of, or any part of, the Product.
|
||||
4. In the case that any entity other than the Creator claims to own
|
||||
intellectual property contained within the Product and wishes to be
|
||||
compensated for the use of such, the Creator reserves the right to refuse
|
||||
such compensation as allowed by the following legal documents:
|
||||
a. Amendment I of the United States Constitution
|
||||
b. Article 19 of the Universal Declaration of Human Rights
|
||||
c. 17 USC § 107 - Limitations on exclusive rights: Fair use
|
||||
5. In cases where all of the documents listed under § 5.4 of this
|
||||
License are not legally recognized, the Creator agrees to pay the owner of
|
||||
the disputed intellectual property a sum which equals the proportion of the
|
||||
prevalence that the disputed intellectual property maintains in the Product
|
||||
out of the total sum of profits garnered by the Creator for creating the
|
||||
Product.
|
||||
6. The Creator reserves the right to waive any conditions of this License at
|
||||
the Creator's discretion.
|
||||
7. The Licensor reserves the right to edit this License at any time.
|
||||
a. The Licensor agrees to update the Opus number of this License to
|
||||
correspond with version changes.
|
||||
b. The Licensor agrees to never publish two or more versions of this License
|
||||
under the same Opus number.
|
||||
8. In no way are any of the Creator's moral rights affected by this License
|
||||
|
||||
6: RIGHTS AND RESTRICTIONS OF LICENSEES AND LICENSORS ("YOU")
|
||||
1. You maintain the following rights and restrictions:
|
||||
a. You are free to copy, distribute and transmit the work.
|
||||
i. For any reuse or distribution, You must make clear to others the
|
||||
License terms of the License.
|
||||
b. You are free to adapt the work.
|
||||
i. If You alter, transform, or build upon the Product, You may distribute
|
||||
the resulting work only under this License.
|
||||
c. You are free to make commercial use of the work.
|
||||
d. You must attribute the work in the manner specified by the Creator (but
|
||||
not in any way that suggests that the Creator endorses You or such use of
|
||||
the work).
|
||||
e. The Creator and any Licensors or Licensees previous to You are not
|
||||
responsible for any changes made to the Product, or any effects arising
|
||||
thereof.
|
||||
f. You can be granted special rights by the Creator as described in
|
||||
section 5.6 of the License
|
||||
2. In no way are any of the following rights affected by the License:
|
||||
a. The fair dealing or fair use rights afforded to You, or other applicable
|
||||
copyright exceptions and limitations.
|
||||
b. Rights another entity may have, either in the Product itself or in how
|
||||
the Product is used, such as publicity or privacy rights.
|
||||
|
||||
7: ACCORDANCE WITH THE LAW
|
||||
The terms that make up the whole and parts of this License shall not apply
|
||||
where local, state, provincial, federal, national, or any other law prohibits
|
||||
such terms.
|
||||
|
||||
8: DISCLAIMER
|
||||
THE PRODUCT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED. IN NO EVENT SHALL THE CREATORS, LICENSEES, OR LICENSORS BE LIABLE FOR
|
||||
ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT,
|
||||
OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION WITH THE PRODUCT OR THE
|
||||
USE OR OTHER DEALINGS IN OR WITH THE PRODUCT.
|
||||
|
||||
|
||||
All of the sounds listed below are provided under the Creative Commons Attribution 4.0 International License.
|
||||
|
||||
https://creativecommons.org/licenses/by/4.0/legalcode
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"RecommendedApps" = "التطبيقات الموصى بها";
|
||||
"GetSupport" = "الدعم";
|
||||
"PrivacyPolicy" = "سياسة الخصوصية";
|
||||
"ReadyToReceive" = "جاهز للاستلام";
|
||||
"SendClipboard" = "إرسال الحافظة";
|
||||
"Clipboard" = "الحافظة";
|
||||
"DeviceCurrentlySendingFiles" = "%1$@ يرسل لك %2$@";
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
"GetSupport" = "Support";
|
||||
|
||||
"PrivacyPolicy" = "Datenschutzerklärung";
|
||||
"ReadyToReceive" = "Bereit zum Empfangen";
|
||||
"SendClipboard" = "Zwischenablage senden";
|
||||
"Clipboard" = "Zwischenablage";
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"RecommendedApps" = "Apps recomendadas";
|
||||
"GetSupport" = "Soporte";
|
||||
"PrivacyPolicy" = "Política de privacidad";
|
||||
"ReadyToReceive" = "Listo para recibir";
|
||||
"SendClipboard" = "Enviar Portapapeles";
|
||||
"Clipboard" = "Portapapeles";
|
||||
"DeviceCurrentlySendingFiles" = "%1$@ te está enviando %2$@";
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"RecommendedApps" = "Applications recommandées";
|
||||
"GetSupport" = "Support";
|
||||
"PrivacyPolicy" = "Politique de confidentialité";
|
||||
"ReadyToReceive" = "Prêt à recevoir";
|
||||
"SendClipboard" = "Envoyer le Presse-papiers";
|
||||
"Clipboard" = "Presse-papiers";
|
||||
"DeviceCurrentlySendingFiles" = "%1$@ vous envoie %2$@";
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"RecommendedApps" = "Ajánlott alkalmazások";
|
||||
"GetSupport" = "Támogatás";
|
||||
"PrivacyPolicy" = "Adatvédelmi irányelvek";
|
||||
"ReadyToReceive" = "Kész a fogadásra";
|
||||
"SendClipboard" = "Vágólap küldése";
|
||||
"Clipboard" = "Vágólap";
|
||||
"DeviceCurrentlySendingFiles" = "%1$@ éppen küldi neked: %2$@";
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
|
||||
"RecommendedApps" = "App consigliate";
|
||||
"GetSupport" = "Supporto";
|
||||
"ReadyToReceive" = "Pronto a ricevere";
|
||||
"PrivacyPolicy" = "Informativa sulla privacy";
|
||||
"SendClipboard" = "Invia Appunti";
|
||||
"Clipboard" = "Appunti";
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"RecommendedApps" = "おすすめアプリ";
|
||||
"GetSupport" = "サポート";
|
||||
"PrivacyPolicy" = "プライバシーポリシー";
|
||||
"ReadyToReceive" = "受信準備完了";
|
||||
"SendClipboard" = "クリップボードを送信";
|
||||
"Clipboard" = "クリップボード";
|
||||
"DeviceCurrentlySendingFiles" = "%1$@ が %2$@ を送信中";
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"RecommendedApps" = "추천 앱";
|
||||
"GetSupport" = "지원";
|
||||
"PrivacyPolicy" = "개인정보 처리방침";
|
||||
"ReadyToReceive" = "수신 준비 완료";
|
||||
"SendClipboard" = "클립보드 보내기";
|
||||
"Clipboard" = "클립보드";
|
||||
"DeviceCurrentlySendingFiles" = "%1$@이(가) %2$@을(를) 보내는 중입니다";
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"RecommendedApps" = "Aanbevolen apps";
|
||||
"GetSupport" = "Ondersteuning";
|
||||
"PrivacyPolicy" = "Privacybeleid";
|
||||
"ReadyToReceive" = "Klaar om te ontvangen";
|
||||
"SendClipboard" = "Klembord Verzenden";
|
||||
"Clipboard" = "Klembord";
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"RecommendedApps" = "Apps recomendados";
|
||||
"GetSupport" = "Suporte";
|
||||
"PrivacyPolicy" = "Política de Privacidade";
|
||||
"ReadyToReceive" = "Pronto para receber";
|
||||
"SendClipboard" = "Enviar Área de Transferência";
|
||||
"Clipboard" = "Área de Transferência";
|
||||
"DeviceCurrentlySendingFiles" = "%1$@ está enviando %2$@ para você";
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"RecommendedApps" = "Aplicativos recomendados";
|
||||
"GetSupport" = "Suporte";
|
||||
"PrivacyPolicy" = "Política de privacidade";
|
||||
"ReadyToReceive" = "Pronto para receber";
|
||||
"SendClipboard" = "Enviar Área de Transferência";
|
||||
"Clipboard" = "Área de Transferência";
|
||||
"DeviceCurrentlySendingFiles" = "%1$@ está a enviar-te %2$@";
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"RecommendedApps" = "Aplicații recomandate";
|
||||
"GetSupport" = "Suport";
|
||||
"PrivacyPolicy" = "Politica de confidențialitate";
|
||||
"ReadyToReceive" = "Pregătit să primești";
|
||||
"SendClipboard" = "Trimite Clipboard-ul";
|
||||
"Clipboard" = "Clipboard";
|
||||
"DeviceCurrentlySendingFiles" = "%1$@ îți trimite %2$@";
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
"GetSupport" = "Поддержка";
|
||||
|
||||
"PrivacyPolicy" = "Политика конфиденциальности";
|
||||
"ReadyToReceive" = "Готов к получению";
|
||||
"SendClipboard" = "Отправить буфер обмена";
|
||||
"Clipboard" = "Буфер обмена";
|
||||
"DeviceCurrentlySendingFiles" = "%1$@ отправляет вам %2$@";
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"RecommendedApps" = "แอปแนะนำ";
|
||||
"GetSupport" = "การสนับสนุน";
|
||||
"PrivacyPolicy" = "นโยบายความเป็นส่วนตัว";
|
||||
"ReadyToReceive" = "พร้อมรับข้อมูล";
|
||||
"SendClipboard" = "ส่งคลิปบอร์ด";
|
||||
"Clipboard" = "คลิปบอร์ด";
|
||||
"DeviceCurrentlySendingFiles" = "%1$@ กำลังส่ง %2$@ ให้คุณ";
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"RecommendedApps" = "Рекомендовані додатки";
|
||||
"GetSupport" = "Підтримка";
|
||||
"PrivacyPolicy" = "Політика конфіденційності";
|
||||
"ReadyToReceive" = "Готовий до отримання";
|
||||
"SendClipboard" = "Надіслати буфер обміну";
|
||||
"Clipboard" = "Буфер обміну";
|
||||
"DeviceCurrentlySendingFiles" = "%1$@ надсилає вам %2$@";
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"RecommendedApps" = "推荐应用";
|
||||
"GetSupport" = "支持";
|
||||
"PrivacyPolicy" = "隐私政策";
|
||||
"ReadyToReceive" = "准备接收";
|
||||
"SendClipboard" = "发送剪贴板";
|
||||
"Clipboard" = "剪贴板";
|
||||
"DeviceCurrentlySendingFiles" = "%1$@ 正在向你发送 %2$@";
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
69DCF49D2AB8C9A500CBE2CC /* libNearbyShare.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 69DCF4812AB70D0600CBE2CC /* libNearbyShare.dylib */; };
|
||||
69DCF49E2AB8C9A500CBE2CC /* libNearbyShare.dylib in Embed Libraries */ = {isa = PBXBuildFile; fileRef = 69DCF4812AB70D0600CBE2CC /* libNearbyShare.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
EB2F9BFB2DA04B69004010A2 /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB2F9BFA2DA04B67004010A2 /* Helpers.swift */; };
|
||||
EB2F9BFE2DA05F48004010A2 /* BezelNotification in Frameworks */ = {isa = PBXBuildFile; productRef = EB2F9BFD2DA05F48004010A2 /* BezelNotification */; };
|
||||
EB3643602D73A2A2009CDFF8 /* AudioManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB36435F2D73A29F009CDFF8 /* AudioManager.swift */; };
|
||||
EB3643622D73A2CA009CDFF8 /* timeIsNow.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = EB3643612D73A2CA009CDFF8 /* timeIsNow.mp3 */; };
|
||||
EB6F62D72D91F4AF00534EC2 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB6F62D62D91F4AC00534EC2 /* SettingsView.swift */; };
|
||||
@@ -235,6 +236,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
EB2F9BFE2DA05F48004010A2 /* BezelNotification in Frameworks */,
|
||||
69DCF4942AB8BF7B00CBE2CC /* libNearbyShare.dylib in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -401,6 +403,7 @@
|
||||
);
|
||||
name = QuickDrop;
|
||||
packageProductDependencies = (
|
||||
EB2F9BFD2DA05F48004010A2 /* BezelNotification */,
|
||||
);
|
||||
productName = NearDrop;
|
||||
productReference = 69DA9A0E29E0BF5100A442DA /* QuickDrop.app */;
|
||||
@@ -477,6 +480,7 @@
|
||||
packageReferences = (
|
||||
69DA9A2429E189EF00A442DA /* XCRemoteSwiftPackageReference "swift-protobuf" */,
|
||||
69DA9A3429E1994C00A442DA /* XCRemoteSwiftPackageReference "SwiftECC" */,
|
||||
EB2F9BFC2DA05F48004010A2 /* XCRemoteSwiftPackageReference "BezelNotification" */,
|
||||
);
|
||||
productRefGroup = 69DA9A0F29E0BF5100A442DA /* Products */;
|
||||
projectDirPath = "";
|
||||
@@ -1012,6 +1016,14 @@
|
||||
minimumVersion = 3.0.0;
|
||||
};
|
||||
};
|
||||
EB2F9BFC2DA05F48004010A2 /* XCRemoteSwiftPackageReference "BezelNotification" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/BlueHuskyStudios/BezelNotification.git";
|
||||
requirement = {
|
||||
kind = upToNextMajorVersion;
|
||||
minimumVersion = 2.1.0;
|
||||
};
|
||||
};
|
||||
/* End XCRemoteSwiftPackageReference section */
|
||||
|
||||
/* Begin XCSwiftPackageProductDependency section */
|
||||
@@ -1025,6 +1037,11 @@
|
||||
package = 69DA9A3429E1994C00A442DA /* XCRemoteSwiftPackageReference "SwiftECC" */;
|
||||
productName = SwiftECC;
|
||||
};
|
||||
EB2F9BFD2DA05F48004010A2 /* BezelNotification */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = EB2F9BFC2DA05F48004010A2 /* XCRemoteSwiftPackageReference "BezelNotification" */;
|
||||
productName = BezelNotification;
|
||||
};
|
||||
/* End XCSwiftPackageProductDependency section */
|
||||
};
|
||||
rootObject = 69DA9A0629E0BF5100A442DA /* Project object */;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"originHash" : "5bbb4a57a61db67d6ce8adc203fbc456a84ce246fff6c01807617c5de6a47adc",
|
||||
"originHash" : "6548f1bdc1af3a6da1ec955a8aaefefc7a98eef65eb9fe111ae0426a26893d3f",
|
||||
"pins" : [
|
||||
{
|
||||
"identity" : "asn1",
|
||||
@@ -10,6 +10,15 @@
|
||||
"version" : "2.7.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "bezelnotification",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/BlueHuskyStudios/BezelNotification.git",
|
||||
"state" : {
|
||||
"revision" : "dcdd70b3abb50007d49a8ce23c14e07079d8b0f2",
|
||||
"version" : "2.1.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "bigint",
|
||||
"kind" : "remoteSourceControl",
|
||||
@@ -19,6 +28,24 @@
|
||||
"version" : "1.21.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "swift-cross-kit-types",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/RougeWare/Swift-Cross-Kit-Types.git",
|
||||
"state" : {
|
||||
"revision" : "d64faa8d5e988352dff45e03a13da4f90c3a70e5",
|
||||
"version" : "1.0.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "swift-function-tools",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/RougeWare/Swift-Function-Tools.git",
|
||||
"state" : {
|
||||
"revision" : "a854f4ed89b7e404019b5a09d24e067acc15432d",
|
||||
"version" : "1.2.4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "swift-protobuf",
|
||||
"kind" : "remoteSourceControl",
|
||||
|
||||
Reference in new issue
Block a user