@@ -1361,6 +1361,7 @@ <h4 class="modal-body text-danger" :style="{display: !getID() ? 'block' : 'none'
1361
1361
1362
1362
firebase . database ( ) . ref ( ) . update ( updates ) . then ( function ( ) {
1363
1363
window . location . hash = name
1364
+ setUserUploadImageListener ( ) // sync user-uploaded photos for this project name
1364
1365
myCode = firebase . auth ( ) . currentUser
1365
1366
makeClean ( )
1366
1367
} ) . catch ( function ( error ) {
@@ -1602,7 +1603,67 @@ <h4 class="modal-body text-danger" :style="{display: !getID() ? 'block' : 'none'
1602
1603
}
1603
1604
} , 10 )
1604
1605
}
1605
-
1606
+
1607
+ window . onmessage = function ( e ) {
1608
+ if ( ! ( e . data instanceof File ) ) {
1609
+ return
1610
+ }
1611
+ if ( ! firebase . auth ( ) . currentUser ) {
1612
+ alert ( 'Please login to upload images.' )
1613
+ return
1614
+ }
1615
+ if ( ! getID ( ) ) {
1616
+ alert ( 'Please save your project to upload images.' )
1617
+ return
1618
+ }
1619
+ if ( ! myCode ) {
1620
+ alert ( 'Please save this project to your account to upload images.' )
1621
+ }
1622
+
1623
+ var uniqueId = Math . random ( ) . toString ( 36 ) . substring ( 2 )
1624
+ + ( new Date ( ) ) . getTime ( ) . toString ( 36 ) ;
1625
+
1626
+ var ref = firebase . storage ( ) . ref ( )
1627
+ . child ( 'UserImageUpload' )
1628
+ . child ( firebase . auth ( ) . currentUser . uid )
1629
+ . child ( getID ( ) )
1630
+ . child ( uniqueId )
1631
+
1632
+ var file = e . data
1633
+ ref . put ( file )
1634
+ . then ( function ( snapshot ) {
1635
+ if ( getID ( ) ) {
1636
+ firebase . database ( ) . ref ( )
1637
+ . child ( 'code-image-uploads' )
1638
+ . child ( getID ( ) )
1639
+ . child ( uniqueId )
1640
+ . set ( snapshot . downloadURL )
1641
+ }
1642
+ } ) . catch ( function ( error ) {
1643
+ alert ( 'There was an error uploading your image: ' + error . message )
1644
+ } )
1645
+ } ;
1646
+
1647
+ var ref
1648
+ setUserUploadImageListener = function ( ) {
1649
+ ref && ref . off ( )
1650
+ ref = firebase . database ( ) . ref ( )
1651
+ . child ( 'code-image-uploads' )
1652
+ . child ( getID ( ) )
1653
+ ref . on ( 'value' , function ( snapshot ) {
1654
+ var addImagesFunc = ( ) => {
1655
+ var images = snapshot . val ( ) || { }
1656
+ scratch . contentWindow . app . setUserUploadImages ( Object . values ( images ) )
1657
+ }
1658
+ if ( scratch . contentWindow . app ) {
1659
+ addImagesFunc ( )
1660
+ } else {
1661
+ scratch . contentDocument . addEventListener ( 'DOMContentLoaded' , addImagesFunc , false ) ;
1662
+ }
1663
+ } )
1664
+ }
1665
+ getID ( ) && setUserUploadImageListener ( )
1666
+
1606
1667
function debounce ( func , wait , immediate ) {
1607
1668
var timeout ;
1608
1669
return function ( ) {
0 commit comments