mirror of
				https://github.com/Instadapp/Swap-Aggregator-Subgraph.git
				synced 2024-07-29 21:57:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
| pragma solidity ^0.4.0;
 | |
| 
 | |
| contract GravatarRegistry {
 | |
|   event NewGravatar(uint id, address owner, string displayName, string imageUrl);
 | |
|   event UpdatedGravatar(uint id, address owner, string displayName, string imageUrl);
 | |
| 
 | |
|   struct Gravatar {
 | |
|     address owner;
 | |
|     string displayName;
 | |
|     string imageUrl;
 | |
|   }
 | |
| 
 | |
|   Gravatar[] public gravatars;
 | |
| 
 | |
|   mapping (uint => address) public gravatarToOwner;
 | |
|   mapping (address => uint) public ownerToGravatar;
 | |
| 
 | |
|   function createGravatar(string _displayName, string _imageUrl) public {
 | |
|     require(ownerToGravatar[msg.sender] == 0);
 | |
|     uint id = gravatars.push(Gravatar(msg.sender, _displayName, _imageUrl)) - 1;
 | |
| 
 | |
|     gravatarToOwner[id] = msg.sender;
 | |
|     ownerToGravatar[msg.sender] = id;
 | |
| 
 | |
|     emit NewGravatar(id, msg.sender, _displayName, _imageUrl);
 | |
|   }
 | |
| 
 | |
|   function getGravatar(address owner) public view returns (string, string) {
 | |
|     uint id = ownerToGravatar[owner];
 | |
|     return (gravatars[id].displayName, gravatars[id].imageUrl);
 | |
|   }
 | |
| 
 | |
|   function updateGravatarName(string _displayName) public {
 | |
|     require(ownerToGravatar[msg.sender] != 0);
 | |
|     require(msg.sender == gravatars[ownerToGravatar[msg.sender]].owner);
 | |
| 
 | |
|     uint id = ownerToGravatar[msg.sender];
 | |
| 
 | |
|     gravatars[id].displayName = _displayName;
 | |
|     emit UpdatedGravatar(id, msg.sender, _displayName, gravatars[id].imageUrl);
 | |
|   }
 | |
| 
 | |
|   function updateGravatarImage(string _imageUrl) public {
 | |
|     require(ownerToGravatar[msg.sender] != 0);
 | |
|     require(msg.sender == gravatars[ownerToGravatar[msg.sender]].owner);
 | |
| 
 | |
|     uint id = ownerToGravatar[msg.sender];
 | |
| 
 | |
|     gravatars[id].imageUrl =  _imageUrl;
 | |
|     emit UpdatedGravatar(id, msg.sender, gravatars[id].displayName, _imageUrl);
 | |
|   }
 | |
| 
 | |
|   // the gravatar at position 0 of gravatars[]
 | |
|   // is fake
 | |
|   // it's a mythical gravatar
 | |
|   // that doesn't really exist
 | |
|   // dani will invoke this function once when this contract is deployed
 | |
|   // but then no more
 | |
|   function setMythicalGravatar() public {
 | |
|     gravatars.push(Gravatar(0x0, " ", " "));
 | |
|   }
 | |
| }
 | 
