mirror of
https://github.com/JustArchiNET/ArchiSteamFarm
synced 2024-11-10 07:04:27 +00:00
Get used to null propagation
This commit is contained in:
parent
0b06df4352
commit
feb3fbfe59
11 changed files with 28 additions and 79 deletions
|
@ -10,6 +10,7 @@
|
||||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FS/@EntryIndexedValue">FS</s:String>
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FS/@EntryIndexedValue">FS</s:String>
|
||||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HTML/@EntryIndexedValue">HTML</s:String>
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HTML/@EntryIndexedValue">HTML</s:String>
|
||||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ID/@EntryIndexedValue">ID</s:String>
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ID/@EntryIndexedValue">ID</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IP/@EntryIndexedValue">IP</s:String>
|
||||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=OK/@EntryIndexedValue">OK</s:String>
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=OK/@EntryIndexedValue">OK</s:String>
|
||||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PIN/@EntryIndexedValue">PIN</s:String>
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PIN/@EntryIndexedValue">PIN</s:String>
|
||||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SC/@EntryIndexedValue">SC</s:String>
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SC/@EntryIndexedValue">SC</s:String>
|
||||||
|
|
|
@ -377,11 +377,8 @@ namespace ArchiSteamFarm {
|
||||||
string request = SteamCommunityURL + "/my/games/?xml=1";
|
string request = SteamCommunityURL + "/my/games/?xml=1";
|
||||||
|
|
||||||
XmlDocument response = await WebBrowser.UrlGetToXMLRetry(request).ConfigureAwait(false);
|
XmlDocument response = await WebBrowser.UrlGetToXMLRetry(request).ConfigureAwait(false);
|
||||||
if (response == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
XmlNodeList xmlNodeList = response.SelectNodes("gamesList/games/game");
|
XmlNodeList xmlNodeList = response?.SelectNodes("gamesList/games/game");
|
||||||
if ((xmlNodeList == null) || (xmlNodeList.Count == 0)) {
|
if ((xmlNodeList == null) || (xmlNodeList.Count == 0)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -492,11 +489,8 @@ namespace ArchiSteamFarm {
|
||||||
string request = SteamCommunityURL + "/tradeoffer/" + tradeID + "?l=english";
|
string request = SteamCommunityURL + "/tradeoffer/" + tradeID + "?l=english";
|
||||||
|
|
||||||
HtmlDocument htmlDocument = await WebBrowser.UrlGetToHtmlDocumentRetry(request).ConfigureAwait(false);
|
HtmlDocument htmlDocument = await WebBrowser.UrlGetToHtmlDocumentRetry(request).ConfigureAwait(false);
|
||||||
if (htmlDocument == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
HtmlNode htmlNode = htmlDocument.DocumentNode.SelectSingleNode("//div[@class='pagecontent']/script");
|
HtmlNode htmlNode = htmlDocument?.DocumentNode.SelectSingleNode("//div[@class='pagecontent']/script");
|
||||||
if (htmlNode == null) { // Trade can be no longer valid
|
if (htmlNode == null) { // Trade can be no longer valid
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -713,11 +707,8 @@ namespace ArchiSteamFarm {
|
||||||
string request = SteamCommunityURL + "/my/inventory/json/" + Steam.Item.SteamAppID + "/" + Steam.Item.SteamContextID + "?trading=" + (tradable ? "1" : "0") + "&start=" + currentPage;
|
string request = SteamCommunityURL + "/my/inventory/json/" + Steam.Item.SteamAppID + "/" + Steam.Item.SteamContextID + "?trading=" + (tradable ? "1" : "0") + "&start=" + currentPage;
|
||||||
|
|
||||||
JObject jObject = await WebBrowser.UrlGetToJObjectRetry(request).ConfigureAwait(false);
|
JObject jObject = await WebBrowser.UrlGetToJObjectRetry(request).ConfigureAwait(false);
|
||||||
if (jObject == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
IEnumerable<JToken> descriptions = jObject.SelectTokens("$.rgDescriptions.*");
|
IEnumerable<JToken> descriptions = jObject?.SelectTokens("$.rgDescriptions.*");
|
||||||
if (descriptions == null) {
|
if (descriptions == null) {
|
||||||
return null; // OK, empty inventory
|
return null; // OK, empty inventory
|
||||||
}
|
}
|
||||||
|
@ -913,11 +904,7 @@ namespace ArchiSteamFarm {
|
||||||
string request = SteamCommunityURL + "/my/videos";
|
string request = SteamCommunityURL + "/my/videos";
|
||||||
|
|
||||||
Uri uri = await WebBrowser.UrlHeadToUriRetry(request).ConfigureAwait(false);
|
Uri uri = await WebBrowser.UrlHeadToUriRetry(request).ConfigureAwait(false);
|
||||||
if (uri == null) {
|
return !uri?.AbsolutePath.StartsWith("/login", StringComparison.Ordinal);
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return !uri.AbsolutePath.StartsWith("/login", StringComparison.Ordinal);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<bool> RefreshSessionIfNeeded() {
|
private async Task<bool> RefreshSessionIfNeeded() {
|
||||||
|
|
|
@ -252,25 +252,11 @@ namespace ArchiSteamFarm {
|
||||||
LoginSemaphore.Dispose();
|
LoginSemaphore.Dispose();
|
||||||
HandledGifts.Dispose();
|
HandledGifts.Dispose();
|
||||||
|
|
||||||
if (AcceptConfirmationsTimer != null) {
|
AcceptConfirmationsTimer?.Dispose();
|
||||||
AcceptConfirmationsTimer.Dispose();
|
ArchiWebHandler?.Dispose();
|
||||||
}
|
CardsFarmer?.Dispose();
|
||||||
|
SendItemsTimer?.Dispose();
|
||||||
if (ArchiWebHandler != null) {
|
Trading?.Dispose();
|
||||||
ArchiWebHandler.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (CardsFarmer != null) {
|
|
||||||
CardsFarmer.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (SendItemsTimer != null) {
|
|
||||||
SendItemsTimer.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Trading != null) {
|
|
||||||
Trading.Dispose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal async Task AcceptConfirmations(bool accept, Steam.ConfirmationDetails.EType acceptedType = Steam.ConfirmationDetails.EType.Unknown, ulong acceptedSteamID = 0, HashSet<ulong> acceptedTradeIDs = null) {
|
internal async Task AcceptConfirmations(bool accept, Steam.ConfirmationDetails.EType acceptedType = Steam.ConfirmationDetails.EType.Unknown, ulong acceptedSteamID = 0, HashSet<ulong> acceptedTradeIDs = null) {
|
||||||
|
@ -333,7 +319,7 @@ namespace ArchiSteamFarm {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((callback == null) || string.IsNullOrEmpty(callback.Nonce)) {
|
if (string.IsNullOrEmpty(callback?.Nonce)) {
|
||||||
Start().Forget();
|
Start().Forget();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1609,7 +1595,7 @@ namespace ArchiSteamFarm {
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void OnGuestPassList(SteamApps.GuestPassListCallback callback) {
|
private async void OnGuestPassList(SteamApps.GuestPassListCallback callback) {
|
||||||
if ((callback == null) || (callback.GuestPasses == null)) {
|
if (callback?.GuestPasses == null) {
|
||||||
Logging.LogNullError(nameof(callback) + " || " + nameof(callback.GuestPasses), BotName);
|
Logging.LogNullError(nameof(callback) + " || " + nameof(callback.GuestPasses), BotName);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1647,7 +1633,7 @@ namespace ArchiSteamFarm {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnChatInvite(SteamFriends.ChatInviteCallback callback) {
|
private void OnChatInvite(SteamFriends.ChatInviteCallback callback) {
|
||||||
if ((callback == null) || (callback.ChatRoomID == null) || (callback.PatronID == null)) {
|
if ((callback?.ChatRoomID == null) || (callback.PatronID == null)) {
|
||||||
Logging.LogNullError(nameof(callback) + " || " + nameof(callback.ChatRoomID) + " || " + nameof(callback.PatronID), BotName);
|
Logging.LogNullError(nameof(callback) + " || " + nameof(callback.ChatRoomID) + " || " + nameof(callback.PatronID), BotName);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1689,7 +1675,7 @@ namespace ArchiSteamFarm {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnFriendsList(SteamFriends.FriendsListCallback callback) {
|
private void OnFriendsList(SteamFriends.FriendsListCallback callback) {
|
||||||
if ((callback == null) || (callback.FriendList == null)) {
|
if (callback?.FriendList == null) {
|
||||||
Logging.LogNullError(nameof(callback) + " || " + nameof(callback.FriendList), BotName);
|
Logging.LogNullError(nameof(callback) + " || " + nameof(callback.FriendList), BotName);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1722,7 +1708,7 @@ namespace ArchiSteamFarm {
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void OnFriendMsgHistory(SteamFriends.FriendMsgHistoryCallback callback) {
|
private async void OnFriendMsgHistory(SteamFriends.FriendMsgHistoryCallback callback) {
|
||||||
if ((callback == null) || (callback.Messages == null) || (callback.SteamID == null)) {
|
if ((callback?.Messages == null) || (callback.SteamID == null)) {
|
||||||
Logging.LogNullError(nameof(callback) + " || " + nameof(callback.Messages) + " || " + nameof(callback.SteamID), BotName);
|
Logging.LogNullError(nameof(callback) + " || " + nameof(callback.Messages) + " || " + nameof(callback.SteamID), BotName);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1865,7 +1851,7 @@ namespace ArchiSteamFarm {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnLoginKey(SteamUser.LoginKeyCallback callback) {
|
private void OnLoginKey(SteamUser.LoginKeyCallback callback) {
|
||||||
if ((callback == null) || string.IsNullOrEmpty(callback.LoginKey)) {
|
if (string.IsNullOrEmpty(callback?.LoginKey)) {
|
||||||
Logging.LogNullError(nameof(callback) + " || " + nameof(callback.LoginKey), BotName);
|
Logging.LogNullError(nameof(callback) + " || " + nameof(callback.LoginKey), BotName);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,9 +75,7 @@ namespace ArchiSteamFarm {
|
||||||
FarmResetEvent.Dispose();
|
FarmResetEvent.Dispose();
|
||||||
FarmingSemaphore.Dispose();
|
FarmingSemaphore.Dispose();
|
||||||
|
|
||||||
if (Timer != null) {
|
Timer?.Dispose();
|
||||||
Timer.Dispose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal async Task SwitchToManualMode(bool manualMode) {
|
internal async Task SwitchToManualMode(bool manualMode) {
|
||||||
|
|
|
@ -50,10 +50,6 @@ namespace ArchiSteamFarm {
|
||||||
public bool MoveNext() => Enumerator.MoveNext();
|
public bool MoveNext() => Enumerator.MoveNext();
|
||||||
public void Reset() => Enumerator.Reset();
|
public void Reset() => Enumerator.Reset();
|
||||||
|
|
||||||
public void Dispose() {
|
public void Dispose() => Lock?.ExitReadLock();
|
||||||
if (Lock != null) {
|
|
||||||
Lock.ExitReadLock();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,11 +100,7 @@ namespace ArchiSteamFarm {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose() {
|
public void Dispose() => Lock?.Dispose();
|
||||||
if (Lock != null) {
|
|
||||||
Lock.Dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void CopyTo(T[] array, int arrayIndex) {
|
public void CopyTo(T[] array, int arrayIndex) {
|
||||||
Lock.EnterReadLock();
|
Lock.EnterReadLock();
|
||||||
|
|
|
@ -91,14 +91,7 @@ namespace ArchiSteamFarm {
|
||||||
return globalDatabase;
|
return globalDatabase;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnServerListUpdated(object sender, EventArgs e) {
|
private void OnServerListUpdated(object sender, EventArgs e) => Save();
|
||||||
if ((sender == null) || (e == null)) {
|
|
||||||
Logging.LogNullError(nameof(sender) + " || " + nameof(e));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Save();
|
|
||||||
}
|
|
||||||
|
|
||||||
// This constructor is used when creating new database
|
// This constructor is used when creating new database
|
||||||
private GlobalDatabase(string filePath) : this() {
|
private GlobalDatabase(string filePath) : this() {
|
||||||
|
|
|
@ -173,11 +173,8 @@ namespace ArchiSteamFarm {
|
||||||
}
|
}
|
||||||
|
|
||||||
HtmlDocument htmlDocument = await Bot.ArchiWebHandler.GetConfirmations(DeviceID, confirmationHash, time).ConfigureAwait(false);
|
HtmlDocument htmlDocument = await Bot.ArchiWebHandler.GetConfirmations(DeviceID, confirmationHash, time).ConfigureAwait(false);
|
||||||
if (htmlDocument == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
HtmlNodeCollection confirmationNodes = htmlDocument.DocumentNode.SelectNodes("//div[@class='mobileconf_list_entry']");
|
HtmlNodeCollection confirmationNodes = htmlDocument?.DocumentNode.SelectNodes("//div[@class='mobileconf_list_entry']");
|
||||||
if (confirmationNodes == null) {
|
if (confirmationNodes == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -437,8 +437,8 @@ namespace ArchiSteamFarm {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs args) {
|
private static void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs args) {
|
||||||
if ((sender == null) || (args == null) || (args.ExceptionObject == null)) {
|
if (args?.ExceptionObject == null) {
|
||||||
Logging.LogNullError(nameof(sender) + " || " + nameof(args) + " || " + nameof(args.ExceptionObject));
|
Logging.LogNullError(nameof(args) + " || " + nameof(args.ExceptionObject));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -446,8 +446,8 @@ namespace ArchiSteamFarm {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void UnobservedTaskExceptionHandler(object sender, UnobservedTaskExceptionEventArgs args) {
|
private static void UnobservedTaskExceptionHandler(object sender, UnobservedTaskExceptionEventArgs args) {
|
||||||
if ((sender == null) || (args == null) || (args.Exception == null)) {
|
if (args?.Exception == null) {
|
||||||
Logging.LogNullError(nameof(sender) + " || " + nameof(args) + " || " + nameof(args.Exception));
|
Logging.LogNullError(nameof(args) + " || " + nameof(args.Exception));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,13 +75,8 @@ namespace ArchiSteamFarm {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose() {
|
public void Dispose() {
|
||||||
if (ServiceHost != null) {
|
ServiceHost?.Close();
|
||||||
ServiceHost.Close();
|
Client?.Close();
|
||||||
}
|
|
||||||
|
|
||||||
if (Client != null) {
|
|
||||||
Client.Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal bool IsServerRunning() => ServiceHost != null;
|
internal bool IsServerRunning() => ServiceHost != null;
|
||||||
|
|
|
@ -365,7 +365,7 @@ namespace ArchiSteamFarm {
|
||||||
}
|
}
|
||||||
|
|
||||||
using (HttpResponseMessage response = await UrlHeadToResponse(request, referer).ConfigureAwait(false)) {
|
using (HttpResponseMessage response = await UrlHeadToResponse(request, referer).ConfigureAwait(false)) {
|
||||||
return response == null ? null : response.RequestMessage.RequestUri;
|
return response?.RequestMessage.RequestUri;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue