Skip to content

Commit

Permalink
shell stabilization
Browse files Browse the repository at this point in the history
  • Loading branch information
AndreiMisiukevich committed May 10, 2019
1 parent 24be97d commit 323bf90
Showing 1 changed file with 36 additions and 3 deletions.
39 changes: 36 additions & 3 deletions Reloader/Xamarin.Forms.HotReload.Reloader/HotReloader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public void Start(Application app, int port, ReloaderScheme scheme)

if (HasCodegenAttribute(app))
{
InitializeElement(app);
InitializeElement(app); ;
}

var listener = new HttpListener
Expand Down Expand Up @@ -212,8 +212,19 @@ private void InitializeElement(object obj)
_fileMapping[className] = item;

var type = obj.GetType();
using (var stream = type.Assembly.GetManifestResourceStream(type.FullName + ".xaml"))
var stream = type.Assembly.GetManifestResourceStream(type.FullName + ".xaml");
try
{
if (stream == null)
{
var appResName = type.Assembly.GetManifestResourceNames()
.FirstOrDefault(x => (x.Contains("obj.Debug.") || x.Contains("obj.Release")) && x.Contains(type.Name));

if (!string.IsNullOrWhiteSpace(appResName))
{
stream = type.Assembly.GetManifestResourceStream(appResName);
}
}
if (stream != null && stream != Stream.Null)
{
using (var reader = new StreamReader(stream))
Expand All @@ -223,6 +234,10 @@ private void InitializeElement(object obj)
}
}
}
finally
{
stream?.Dispose();
}
}

if (!(obj is ResourceDictionary))
Expand Down Expand Up @@ -321,6 +336,12 @@ private void ReloadElements(string content, string path)
default:
return;
}
//reload all data in case of app resources update
if(affectedItems.Any(x => x.Objects.Any(r => r is Application)))
{
affectedItems = affectedItems.Union(_fileMapping.Values.Where(x => x.Xaml.InnerXml.Contains("StaticResource")));
}
}
foreach (var affectedItem in affectedItems)
Expand Down Expand Up @@ -351,7 +372,7 @@ private void ReloadElement(object obj, ReloadItem reloadItem)

//[0] Parse new xaml with resources
var rebuildEx = RebuildElement(obj, xamlDoc);
if(!(obj is VisualElement))
if(!(obj is VisualElement) && !(obj is Application))
{
if(rebuildEx != null)
{
Expand Down Expand Up @@ -384,6 +405,12 @@ private void ReloadElement(object obj, ReloadItem reloadItem)
//rd.Clear();
//rd.LoadFromXaml(sourceItem.Xaml.InnerXml);
//dict.Add(rd);
var rd = new ResourceDictionary();
rd.LoadFromXaml(sourceItem.Xaml.InnerXml);
foreach(var key in rd.Keys)
{
dict.Remove(key);
}
dict.LoadFromXaml(sourceItem.Xaml.InnerXml);
}
else if (dict.Source != null)
Expand All @@ -394,6 +421,12 @@ private void ReloadElement(object obj, ReloadItem reloadItem)
sourceItem = _fileMapping.FirstOrDefault(it => it.Key.EndsWith(dId, StringComparison.Ordinal)).Value;
if (sourceItem != null)
{
var rd = new ResourceDictionary();
rd.LoadFromXaml(sourceItem.Xaml.InnerXml);
foreach (var key in rd.Keys)
{
dict.Remove(key);
}
dict.LoadFromXaml(sourceItem.Xaml.InnerXml);
}
}
Expand Down

0 comments on commit 323bf90

Please sign in to comment.